Programming Languages

Talk by Tamás Szabó: Real-Time Feedback through Incremental Program Analysis

Tamás Szabó from Itemis AG presents a domain-specific language for the definition of incremental program analyses.

Abstract

Program analyses support software developers, for example, through fault detection, code-quality assurance, and by enabling compiler optimizations and refactorings. To provide real-time feedback to developers within IDEs, an analysis must run efficiently even if the analyzed code base is large.

To this end, we present a domain-specific language called IncA for the definition of efficient incremental program analyses that update their result as the program evolves. IncA compiles analyses into graph patterns and relies on existing incremental matching algorithms. To scale IncA analyses to large programs, we describe optimizations that reduce caching and prune change propagation. Using IncA, we have developed incremental control flow and points-to analysis for C, well-formedness checks for DSLs, and 10 FindBugs checks for Java. Our evaluation demonstrates significant speedups for all analyses compared to their non-incremental counterparts.