Automatic Incrementalization of Prolog Based Static Analyses

Modern development environments integrate various static analyses into the build process. 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]  Benjamin Livshits,et al.  Finding application errors and security flaws using PQL: a program query language , 2005, OOPSLA '05.

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

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

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

[5]  Michael Eichberg,et al.  XIRC: a kernel for cross-artifact information engineering in software development environments , 2004, 11th Working Conference on Reverse Engineering.

[6]  Barbara G. Ryder,et al.  A safe approximate algorithm for interprocedural aliasing , 1992, PLDI '92.

[7]  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).

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

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

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

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

[12]  C. R. Ramakrishnan,et al.  A Local Algorithm for Incremental Evaluation of Tabled Logic Programs , 2006, ICLP.

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

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

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

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

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

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

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

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

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

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

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

[24]  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).

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

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

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

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

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

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

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

[32]  Hisao Tamaki,et al.  OLD Resolution with Tabulation , 1986, ICLP.

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

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

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

[36]  Michael Eichberg Matthias Kahl Diptikalyan Saha,et al.  Automatic Incrementalization of Static Analyses , 2006 .