kirancodes.me
To Proof Maintenance & Beyond!

Accurate Interprocedural Null-Dereference Analysis for Java

Mangala Gowri Nanda, Saurabh Sinha

Abstract

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.

BibTeX
@inproceedings{Nanda-Sinha:ICSE09,
  author    = {Mangala Gowri Nanda and
               Saurabh Sinha},
  title     = {Accurate Interprocedural {Null-Dereference} Analysis for Java},
  booktitle = {ICSE},
  pages     = {133--143},
  publisher = {{IEEE}},
  year      = {2009},
}

Related papers