Cibai: An Abstract Interpretation-Based Static Analyzer for Modular Analysis and Verification of Java Classes

We introduce Cibai a generic static analyzer based on abstract interpretation for the modular analysis and verification of Java classes. We present the abstract semantics and the underlying abstract domain, a combination of an aliasing analysis and octagons. We discuss some implementation issues, and we compare Cibai with similar tools, showing how Cibai achieves a higher level of automation and precision while having comparable performances.

[1]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[2]  Nikolai Tillmann,et al.  Discovering Likely Method Specifications , 2006, ICFEM.

[3]  Pietro Ferrara JAIL: Firewall Analysis of Java Card by Abstract Interpretation , 2006 .

[4]  Amer Diwan,et al.  Discovering Algebraic Specifications from Java Classes , 2003, ECOOP.

[5]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[6]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[7]  Bart Jacobs,et al.  Reasoning about Java classes: preliminary report , 1998, OOPSLA '98.

[8]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[9]  Bruno Blanchet,et al.  Escape analysis: correctness proof, implementation and experimental results , 1998, POPL '98.

[10]  Antoine Miné,et al.  The octagon abstract domain , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[11]  James Gosling,et al.  The Java Language Specification, 3rd Edition , 2005 .

[12]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[13]  David R. Cok,et al.  ESC/Java2: Uniting ESC/Java and JML , 2004, CASSIS.

[14]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[15]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[16]  Antoine Mid The Octagon Abstract Domain , 2001 .

[17]  Luca Cardelli,et al.  ECOOP 2003 – Object-Oriented Programming , 2003, Lecture Notes in Computer Science.

[18]  Stephen Gilmore,et al.  Mobile Resource Guarantees for Smart Devices , 2004, CASSIS.

[19]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[20]  Francesco Logozzo Class invariants as abstract interpretation of trace semantics , 2009, Comput. Lang. Syst. Struct..

[21]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[22]  Agostino Cortesi,et al.  Distinctness and Sharing Domains for Static Analysis of Java Programs , 2001, ECOOP.

[23]  Francesco Logozzo,et al.  Class-Level Modular Analysis for Object Oriented Languages , 2003, SAS.

[24]  Francesco Logozzo Separate Compositional Analysis of Class-Based Object-Oriented Languages , 2004, AMAST.

[25]  Fausto Spoto,et al.  Detecting Non-cyclicity by Abstract Compilation into Boolean Functions , 2006, VMCAI.

[26]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[27]  T LeavensGary,et al.  Preliminary design of JML , 2006 .

[28]  Aneesh Aggarwal,et al.  Related field analysis , 2001, PLDI '01.

[29]  Claude Marché,et al.  The KRAKATOA tool for certificationof JAVA/JAVACARD programs annotated in JML , 2004, J. Log. Algebraic Methods Program..

[30]  Michael D. Ernst,et al.  Dynamically discovering likely program invariants , 2000 .

[31]  Fausto Spoto,et al.  Julia: A Generic Static Analyser for the Java Bytecode , 2005 .

[32]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .