Abstract: Static analyses are vital in modern software development, but far too often response times are lacking. Our goal is to detect errors and to aid program understanding live, as the developer is typing in an IDE. IDEs use the information computed by static analyses to explain the program to the developer (variable v has type int, variables v1 and v2 point to the same object), to provide exploration functionality (jump to declaration, find call sites), to guide developers (uninitialized read, dead code), and to provide sophisticated edit actions (refactorings). IDEs must provide all these features without interrupting the workflow of the developer. In particular, IDEs must react quickly to code changes. That is, the underlying static analyses need to be incremental. We present IncA, a language-independent framework for incremental static analysis. IncA provides a DSL for the definition of static analyses and incrementalizes them automatically by translation to a lattice-aware Datalog dialect. We explain how IncA encodes source code and source-code changes as Datalog relations, and how the IncA runtime system solves the Datalog incrementally to answer analysis queries. IncA has been used to incrementalize control flow and points-to analysis for C, string analysis and points-to analysis for Java, and type analysis. In all these scenarios IncA provides up-to-date analysis results within milliseconds of the code change, even for inter-procedural analyses.
Bio: Sebastian Erdweg is a professor of computer science at JGU Mainz in Germany, where he works on the foundation and application of programming languages. Sebastian's goal is to support developers in creating and maintaining reliable and efficient software systems. His group studies the design and efficient implementation of program languages, programming tools, and programming methods, with a particular focus on static analysis, logic programming, and incremental computing.