Scala-AM: A Modular Static Analysis Framework

We present Scala-AM, a modular framework for static analysis based on systematic abstraction of abstract machines. Scala-AM achieves modularity by separating operational semantics, abstract values and machine abstraction concerns via actions, thus enabling language designers, static analysis developers and machine abstraction experts to combine their efforts. This modularity enables us to support semantics for multiple languages, and to include multiple machine abstractions in our framework. Different operational semantics and machine abstractions can then be combined with minimal effort. We evaluate our framework by demonstrating how it enables implementing machine abstractions independently of the operational semantics, and by instantiating the framework for a static taint analysis of Scheme.

[1]  Matthew Might,et al.  Optimizing abstract abstract machines , 2012, ICFP.

[2]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[3]  Olin Shivers,et al.  Control-flow analysis of higher-order languages of taming lambda , 1991 .

[4]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[5]  Matthew Might,et al.  Pushdown control-flow analysis for free , 2016, POPL.

[6]  Eric Bodden,et al.  Inter-procedural data-flow analysis with IFDS/IDE and Soot , 2012, SOAP '12.

[7]  Anthony M. Sloane,et al.  Lightweight Language Processing in Kiama , 2009, GTTSE.

[8]  Matthew Might,et al.  Introspective pushdown analysis of higher-order programs , 2012, ICFP.

[9]  Matthew Might,et al.  Abstracting abstract machines , 2010, ICFP '10.

[10]  Anders Møller,et al.  QuickChecking static analysis properties , 2017, Softw. Test. Verification Reliab..

[11]  Grigore Rosu,et al.  An overview of the K semantic framework , 2010, J. Log. Algebraic Methods Program..

[12]  Coen De Roover,et al.  Detecting concurrency bugs in higher-order programs through abstract interpretation , 2015, PPDP.

[13]  Matthew Might,et al.  A Family of Abstract Interpretations for Static Analysis of Concurrent Higher-Order Programs , 2011, SAS.

[14]  Jorge A. Navas,et al.  IKOS: A Framework for Static Analysis Based on Abstract Interpretation , 2014, SEFM.

[15]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .