论文标题
互动抽象的解释:将整个程序重新分析廉价
Interactive Abstract Interpretation: Reanalyzing Whole Programs for Cheap
论文作者
论文摘要
为了将静态程序分析放在软件开发人员的指尖,我们为交互式抽象解释提供了一个框架。在提供合理的分析结果的同时,总体上的抽象解释可能很昂贵。为了实现快速响应时间,我们将分析基础架构(包括后处理)增量,而无需对分析规范本身进行任何修改。我们依靠本地通用FixPoint Engine TD,该发动机TD会动态跟踪依赖项,同时探索有助于回答初始查询的未知数。懒惰无效用于受程序更改影响的分析结果。专门的改进支持并发缺陷(例如数据率)的增量分析。该框架已在静态分析仪中的多线程C中实现,并使用Magpiebridge将其传递给IDE。我们评估了我们的实施W.R.T.响应时间和一致性的院子棒:应保留以前被证明的不变性 - 当它们不受变化影响时。结果表明,通过我们的方法,小变化后的重新分析仅需要从施加分析时间的一小部分,而大多数精度则保留。我们还提供了计划开发的示例,强调了总体方法的可用性。
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.