Towards a Complete Static Analyser for Java: an Abstract Interpretation Framework and its Implementation

https://doi.org/10.1016/j.entcs.2005.01.025Get rights and content
Under a Creative Commons license
open access

Abstract

We present an abstract interpretation framework for a subset of Java (without concurrency). The framework uses a structural abstract domain whose concretization function is parameterized on a relation between abstract and concrete locations. When structurally incomptatible objects may be referred to by the same variable at a given program point, structural information is discarded and replaced by an approximated information about the objects (our presentation concentrates on type information). Plain structural information allows precise intra-procedural analysis but is quickly lost when returning from a method call. To overcome this limitation, relational structural information is introduced, which enables a precise inter-procedural analysis without resorting to inlining.

The paper contains an overview of the work. We describe parts of the standard and abstract semantics; then, we briefly explain the fixpoint algorithms used by our implementation; lastly, we provide experimental results for small programs.

Keywords

Abstract Interpretation
Java
Type Analysis
Pointer Analysis
Program Verification
Program Specialization

Cited by (0)