Static analysis by means of abstract interpretation is a tool of choice for proving absence of some classes of errors, typically undefined behaviors in code, in a sound way. However, static analysis tools are hardly integrated in CI/CD processes. One of the main reasons is that they are still time- and memory-expensive to apply after every single patch when developing a program. For solving this issue, incremental static analysis helps developers quickly obtain analysis results after making changes to a program. However, existing approaches are often not guaranteed to be sound, limited to specific analyses, or tied to specific tools. This limits their generalizability and applicability in practice, especially for large and critical software. In this paper, we propose a generic, sound approach to incremental static analysis that is applicable to any abstract interpreter. Our approach leverages the similarity between two versions of a program to soundly reuse previously computed analysis results. We introduce novel methods for summarizing functions and reusing loop invariants. They significantly reduce the cost of reanalysis, while maintaining soundness and a high level of precision. We have formalized our approach, proved it sound, implemented it in Eva, the abstract interpreter of Frama-C, and evaluated it on a set of real-world commits of open-source programs.
@Article{razafintsialonina_et_al:DARTS.11.2.15, author = {Razafintsialonina, Mamy and B\"{u}hler, David and Perrelle, Valentin}, title = {{Reusing Caches and Invariants for Efficient and Sound Incremental Static Analysis (Artifact)}}, pages = {15:1--15:5}, journal = {Dagstuhl Artifacts Series}, ISSN = {2509-8195}, year = {2025}, volume = {11}, number = {2}, editor = {Razafintsialonina, Mamy and B\"{u}hler, David and Perrelle, Valentin}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.11.2.15}, URN = {urn:nbn:de:0030-drops-233586}, doi = {10.4230/DARTS.11.2.15}, annote = {Keywords: Abstract Interpretation, Static Analysis, Incremental Analysis} }
0ced0251ab667ebd91be0ebaabfc15d2
(Get MD5 Sum)
The artifact has been evaluated as described in the ECOOP 2025 Call for Artifacts and the ACM Artifact Review and Badging Policy.
Feedback for Dagstuhl Publishing