Program analyses detect errors in code but have to trade off precision, recall, and performance. However, when code changes frequently as in an IDE, repeated re-analysis from-scratch is unnecessary and leads to poor performance. Incremental program analysis promises to deliver fast feedback after a code change by deriving a new analysis result from the previous one, and prior work has shown that order-of-magnitude performance improvements are possible. However, existing frameworks for incremental program analysis only support Datalog-style relational analysis, but not lattice-based analyses that derive and aggregate lattice values. To solve this problem, we present the ILPA incremental program analysis framework that supports relational analyses and lattice-based computations. ILPA is based on a novel algorithm that enables the incremental maintenance of recursive lattice-value aggregation, which occurs when analyzing code with cyclic control flow by fixpoint iteration. To demonstrate our approach, we realized strong-update points-to analysis and string analyses for Java in ILPA and present performance measurements that demonstrate incremental analysis updates within milliseconds.
Thu 8 Nov Times are displayed in time zone: (GMT-05:00) Guadalajara, Mexico City, Monterrey change
|13:30 - 13:52|
|13:52 - 14:15|
|14:15 - 14:37|
|14:37 - 15:00|