Demanded Abstract Interpretation

Abstract

Formal static analysis is seeing increasingly widespread adoption as a tool for verificationand bug-finding, but even with powerful cloud infrastructure it can take minutes or hours for a developer to get analysis results after a code change. This dissertation considers the problem of making expressive and sophisticated static analyzers interactive by providing analysis results to developers in as close to real time as possible. While existing techniques offer some demand-driven or incremental aspects for certain classes of analysis, the fundamental challenge addressed by this work is doing both for abstract interpretation in arbitrary domains.This dissertation presents a technique, demanded abstract interpretation, that lifts analysiscomputations to a dependency graph structure in which incremental program edits and demand-driven evaluation of abstract semantics can be handled uniformly. Demanded abstract interpretation draws inspiration from graph-based approaches to incremental computation, and is not only sound and terminating but also from-scratch consistent with underlying batch analyses. The approach is parametric in the choice of abstract domain, supporting a wide range of analysis problems and enabling the reuse of highly-tuned existing domain implementations in our demanded analysis framework without requiring any per-domain reasoning about incrementality or demand. The complex, cyclic, and unbounded dependency structures that arise when analyzing loops and recursive control flow in an infinite-height domain are a key challenge, which our approach handles by dynamically extending novel acyclic encodings of such analysis computation.This dissertation describes and formalizes demanded abstract interpretation techniques forboth intraprocedural analysis and compositional interprocedural analysis. We also present promising experimental results in a prototype analysis implementation, and describe some extensions to the framework designed to confront practical resource constraints without sacrificing formal guarantees

    Similar works