A Static Bug Detector for Uninitialized Field References in Java Programs

Sunae SEO  Youil KIM  Hyun-Goo KANG  Taisook HAN  

IEICE TRANSACTIONS on Information and Systems   Vol.E90-D   No.10   pp.1663-1671
Publication Date: 2007/10/01
Online ISSN: 1745-1361
DOI: 10.1093/ietisy/e90-d.10.1663
Print ISSN: 0916-8532
Type of Manuscript: PAPER
Category: Software Engineering
Java object initialization,  software verification,  program analysis,  safety,  

Full Text: PDF(278KB)>>
Buy this Article

Correctness of Java programs is important because they are executed in distributed computing environments. The object initialization scheme in the Java programming language is complicated, and this complexity may lead to undesirable semantic bugs. Various tools have been developed for detecting program patterns that might cause errors during program execution. However, current tools cannot identify code patterns in which an uninitialized field is accessed when an object is initialized. We refer to such erroneous patterns as uninitialized field references. In this paper, we propose a static pattern detection algorithm for identifying uninitialized field references. We design a sound analysis for this problem and implement an analyzer using the Soot framework. In addition, we apply our algorithm to some real Java applications. From the experiments, we identify 12 suspicious field references in the applications, and among those we find two suspected errors by manual inspection.