Abstract
Static program analysis for bug detection in industrial C/C++ code has many challenges. One of them is to analyze pointer and pointer structures efficiently. While there has been much research into various aspects of pointer analysis either for compiler optimization or for verification tasks, both classical categories are not optimized for bug detection, where speed and precision are important, but soundness (no missed bugs) and completeness (no false positives) do not necessarily need to be guaranteed. In this work we present a new pointer analysis tool for C/C++ code. The tool introduces the notion of heap graphs that are inspired by shape analysis without the computational overhead, but also without the verification soundness guarantees. We explain the underlying ideas and that it lends itself to a fast, modular and incremental analysis, features that are essential for large code bases. To demonstrate the practicality of the solution we integrate the pointer analyzer into the C/C++ bug checking tool Goanna. We show that run-times of the new analyzer are close to compile times on large code bases and, most importantly, that the new solution is able to reduce false positives as well as to detect previously unknown pointer bugs in the Git source code.
Original language | English |
---|---|
Title of host publication | IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM 2013) |
Place of Publication | Piscataway, NJ |
Publisher | Institute of Electrical and Electronics Engineers (IEEE) |
Pages | 69-73 |
Number of pages | 5 |
ISBN (Electronic) | 9781467357395 |
DOIs | |
Publication status | Published - 2013 |
Externally published | Yes |
Event | 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation, SCAM 2013 - Eindhoven, Netherlands Duration: 22 Sept 2013 → 23 Sept 2013 |
Other
Other | 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation, SCAM 2013 |
---|---|
Country/Territory | Netherlands |
City | Eindhoven |
Period | 22/09/13 → 23/09/13 |