清除有毒垃圾:恢复混合流动敏感静态分析中的精度
编程语言
2025-04-09 v1 软件工程
摘要
程序的静态分析将局部程序状态的 flow- 与 context- 敏感分析与全局的 flow- 与 context- 不敏感不变式计算相结合,例如抽象数据由多个线程共享。局部和全局的值可能相互依赖,局部程序状态的分析既会为全局做出贡献,又会查询其值。通常情况下,所有对全局的贡献在 fixpoint 迭代期间累积,应用 widening 以确保终止。此类 flow- 不敏感信息常常变得不必要地不精确,可能包含多余的贡献 -- 垃圾 -- which 反过来可能对整个分析的精度产生有毒性影响。为了恢复全局的精度,我们提出了互补的技术:对全局应用 narrowling 可区分贡献来源;谨慎 widening 限制在全局上应用的 widening 量;最后,抽象垃圾回收撤销对全局的贡献并传播其撤销。实验评估表明,这些技术以可接受的代价提高了混合 flow- 敏感分析的精度。
引用
@article{arxiv.2504.06026,
title = {Taking out the Toxic Trash: Recovering Precision in Mixed Flow-Sensitive Static Analyses},
author = {Fabian Stemmler and Michael Schwarz and Julian Erhard and Sarah Tilscher and Helmut Seidl},
journal= {arXiv preprint arXiv:2504.06026},
year = {2025}
}
备注
Preprint of our PLDI '25 paper, including supplementary material