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...

Full description

Saved in:
Bibliographic Details
Published in2009 IEEE 31st International Conference on Software Engineering pp. 133 - 143
Main Authors Nanda, Mangala Gowri, Sinha, Saurabh
Format Conference Proceeding
LanguageEnglish
Published Washington, DC, USA IEEE Computer Society 16.05.2009
IEEE
SeriesACM Conferences
Subjects
Online AccessGet full text
ISBN9781424434534
142443453X
ISSN0270-5257
DOI10.1109/ICSE.2009.5070515

Cover

More Information
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