Accurate Interprocedural Null-Dereference Analysis for Java
Null dereference is a commonly occurring defect in Java programs, and many static-analysis tools identify such defects. However, most of the existing tools perform a limited interprocedural analysis. In this paper, we present an interprocedural path-sensitive and context-sensitive analysis for ident...
Saved in:
| Published in | 2009 IEEE 31st International Conference on Software Engineering pp. 133 - 143 |
|---|---|
| Main Authors | , |
| Format | Conference Proceeding |
| Language | English |
| Published |
Washington, DC, USA
IEEE Computer Society
16.05.2009
IEEE |
| Series | ACM Conferences |
| Subjects | |
| Online Access | Get full text |
| ISBN | 9781424434534 142443453X |
| ISSN | 0270-5257 |
| DOI | 10.1109/ICSE.2009.5070515 |
Cover
| Summary: | Null dereference is a commonly occurring defect in Java programs, and many static-analysis tools identify such defects. However, most of the existing tools perform a limited interprocedural analysis. In this paper, we present an interprocedural path-sensitive and context-sensitive analysis for identifying null dereferences. Starting at a dereference statement, our approach performs a backward demand-driven analysis to identify precisely paths along which null values may flow to the dereference. The demand-driven analysis avoids an exhaustive program exploration, which lets it scale to large programs. We present the results of empirical studies conducted using large open-source and commercial products. Our results show that: (1) our approach detects fewer false positives, and significantly more interprocedural true positives, than other commonly used tools; (2) the analysis scales to large subjects; and (3) the identified defects are often deleted in subsequent releases, which indicates that the reported defects are important. |
|---|---|
| ISBN: | 9781424434534 142443453X |
| ISSN: | 0270-5257 |
| DOI: | 10.1109/ICSE.2009.5070515 |