Interactive Abstract Interpretation: Reanalyzing Whole Programs for Cheap

09/21/2022
by   Julian Erhard, et al.
0

To put static program analysis at the fingertips of the software developer, we propose a framework for interactive abstract interpretation. While providing sound analysis results, abstract interpretation in general can be quite costly. To achieve quick response times, we incrementalize the analysis infrastructure, including postprocessing, without necessitating any modifications to the analysis specifications themselves. We rely on the local generic fixpoint engine TD, which dynamically tracks dependencies, while exploring the unknowns contributing to answering an initial query. Lazy invalidation is employed for analysis results affected by program change. Dedicated improvements support the incremental analysis of concurrency deficiencies such as data-races. The framework has been implemented for multithreaded C within the static analyzer Goblint, using MagpieBridge to relay findings to IDEs. We evaluate our implementation w.r.t. the yard sticks of response time and consistency: formerly proven invariants should be retained - when they are not affected by the change. The results indicate that with our approach, a reanalysis after small changes only takes a fraction of from-scratch analysis time, while most of the precision is retained. We also provide examples of program development highlighting the usability of the overall approach.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/02/2021

Demanded Abstract Interpretation (Extended Version)

We consider the problem of making expressive static analyzers interactiv...
research
06/13/2021

VeriFly: On-the-fly Assertion Checking via Incrementality

Assertion checking is an invaluable programmer's tool for finding many c...
research
11/23/2016

Static Analysis of Communicating Processes using Symbolic Transducers

We present a general model allowing static analysis based on abstract in...
research
08/15/2018

Multivariant Assertion-based Guidance in Abstract Interpretation

Approximations during program analysis are a necessary evil, as they ens...
research
07/21/2020

What Programs Want: Automatic Inference of Input Data Specifications

Nowadays, as machine-learned software quickly permeates our society, we ...
research
05/30/2019

Identifying Cache-Based Side Channels through Secret-Augmented Abstract Interpretation

Cache-based side channels enable a dedicated attacker to reveal program ...
research
11/17/2022

Completeness in static analysis by abstract interpretation, a personal point of view

Static analysis by abstract interpretation is generally designed to be ”...

Please sign up or login with your details

Forgot password? Click here to reset