Automatic Incrementalization of Static Analyses

Modern development environments integrate various static analyses into the build process. But, analyses that analyze the whole project whenever the project changes are impractical in this context. We present an approach to automatic incrementalization of analyses that are specified as tabled logic programs and evaluated using incremental tabled evaluation, a technique for efficiently updating memo tables in response to changes in facts and rules. The approach has been implemented and integrated into the Eclipse IDE. Our measurements show that this technique is effective for automatically incrementalizing a broad range of static analyses.

[1]  Barbara G. Ryder,et al.  Incremental data-flow analysis algorithms , 1988, TOPL.

[2]  Thomas P. Jensen,et al.  Modular Class Analysis with DATALOG , 2003, SAS.

[3]  Mary Lou Soffa,et al.  An Incremental Version of Iterative Data Flow Analysis , 1989, IEEE Trans. Software Eng..

[4]  Barbara G. Ryder,et al.  Incremental data flow analysis via dominator and attribute update , 1988, POPL '88.

[5]  Alan Bundy,et al.  Automatic verification of Java design patterns , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[6]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[7]  Joshua J. Bloch Effective Java : programming language guide , 2001 .

[8]  Benjamin Livshits,et al.  Finding application errors and security flaws using PQL: a program query language , 2005, OOPSLA '05.

[9]  Yanhong A. Liu,et al.  Parametric regular path queries , 2004, PLDI '04.

[10]  Frédéric Vivien,et al.  Incrementalized pointer and escape analysis , 2001, PLDI '01.

[11]  Roland N. Bol,et al.  Tabulated Resolution for the Well-Founded Semantics , 1993, J. Log. Program..

[12]  Elnar Hajiyev,et al.  codeQuest: Scalable Source Code Queries with Datalog , 2006, ECOOP.

[13]  C. R. Ramakrishnan,et al.  Practical program analysis using general purpose logic programming systems—a case study , 1996, PLDI '96.

[14]  C. R. Ramakrishnan,et al.  Incremental Evaluation of Tabled Prolog: Beyond Pure Logic Programs , 2006, PADL.

[15]  Jan Vitek,et al.  Confined types in Java , 2001, Softw. Pract. Exp..

[16]  Barbara G. Ryder,et al.  An efficient hybrid algorithm for incremental data flow analysis , 1989, POPL '90.

[17]  K. A. Ross,et al.  Tabled Evaluation with Delaying for General Logic Programs , 1996 .

[18]  C. R. Ramakrishnan,et al.  Incremental Evaluation of Tabled Logic Programs , 2003, ICLP.

[19]  Roel Wuyts,et al.  Declarative reasoning about the structure of object-oriented systems , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[20]  Stephen A. Edwards,et al.  Incremental Algorithms for Inter-procedural Analysis of Safety Properties , 2005, CAV.

[21]  Roger F. Crew ASTLOG: A Language for Examining Abstract Syntax Trees , 1997, DSL.

[22]  C. R. Ramakrishnan,et al.  Incremental and demand-driven points-to analysis using logic programming , 2005, PPDP.

[23]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[24]  Dawson R. Engler,et al.  Using programmer-written compiler extensions to catch security holes , 2002, Proceedings 2002 IEEE Symposium on Security and Privacy.

[25]  Barbara G. Ryder,et al.  An incremental flow- and context-sensitive pointer aliasing analysis , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[26]  Sriram K. Rajamani,et al.  SLAM and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft , 2004, IFM.

[27]  David Hovemeyer,et al.  Finding bugs is easy , 2004, SIGP.

[28]  C. R. Ramakrishnan,et al.  Symbolic Support Graph: A Space Efficient Data Structure for Incremental Tabled Evaluation , 2005, ICLP.

[29]  Michael G. Burke An interval-based approach to exhaustive and incremental interprocedural data-flow analysis , 1990, TOPL.

[30]  Barbara G. Ryder,et al.  A Critical Analysis of Incremental Iterative Data Flow Analysis Algorithms , 1990, IEEE Trans. Software Eng..

[31]  Barbara G. Ryder,et al.  Incremental Analysis of Side Effects for C Software Systems , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[32]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

[33]  Michael Eichberg,et al.  Using Annotations to Check Structural Properties of Classes , 2005, FASE.