We consider the problem of making expressive static analyzers interactive. Formal static analysis is seeing increasingly widespread adoption as a tool for verification and bug-finding, but even with powerful cloud infrastructure it can take minutes or hours to get batch analysis results after a code change. While existing techniques offer some demand-driven or incremental aspects for certain classes of analysis, the fundamental challenge we tackle is doing both for arbitrary abstract interpreters. Our technique, demanded abstract interpretation, lifts program syntax and analysis state to a dynamically evolving graph structure, in which program edits, client-issued queries, and evaluation of abstract semantics are all treated uniformly. The key difficulty addressed by our approach is the application of general incremental computation techniques to the complex, cyclic dependency structure induced by abstract interpretation of loops with widening operators. We prove that desirable abstract interpretation meta-properties, including soundness and termination, are preserved in our approach, and that demanded analysis results are equal to those computed by a batch abstract interpretation. Experimental results suggest promise for a prototype demanded abstract interpretation framework: by combining incremental and demand-driven techniques, our framework consistently delivers analysis results at interactive speeds, answering 95% of queries within 1.2 seconds.


翻译:正式静态分析显示,人们日益广泛采用电表静态分析器来作为核查和测错工具,但即使有强大的云层基础设施,在代码改变后,仍可能需要几分钟或小时才能获得批量分析结果。 虽然现有技术为某些类别的分析提供了某些需求驱动或递增的方面,但我们所处理的根本挑战是对任意的抽象解释者同时进行。我们的技术、要求抽象解释、提高程序语法和分析,使之形成动态变化的图表结构,在这个结构中,程序编辑、客户发布查询和评价抽象语义都得到一致的处理。我们的方法所处理的关键困难是,对由与不断扩大的操作者对循环进行抽象解释而引发的复杂、循环依赖结构应用一般递增计算技术。我们证明,我们的方法中保留了适当的抽象解释元性,包括健全性和终止性,要求的分析结果与按批量抽象解释计算的结果相同。实验结果表明,一个原型要求的抽象解释框架有希望:通过将递增和需求驱动技术相结合,我们的框架以互动速度以持续地提供分析结果,在1.2秒内解解解95%的查询结果。

0
下载
关闭预览

相关内容

IFIP TC13 Conference on Human-Computer Interaction是人机交互领域的研究者和实践者展示其工作的重要平台。多年来,这些会议吸引了来自几个国家和文化的研究人员。官网链接:http://interact2019.org/
专知会员服务
44+阅读 · 2021年5月26日
【耶鲁】数据结构与编程技术,656页pdf
专知会员服务
56+阅读 · 2021年4月26日
【耶鲁】数据结构与编程技术,572页pdf
专知会员服务
47+阅读 · 2020年12月27日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
79+阅读 · 2020年7月26日
【新书】Python编程基础,669页pdf
专知会员服务
195+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
94+阅读 · 2019年10月10日
知识图谱本体结构构建论文合集
专知会员服务
107+阅读 · 2019年10月9日
已删除
架构文摘
3+阅读 · 2019年4月17日
Hierarchical Disentangled Representations
CreateAMind
4+阅读 · 2018年4月15日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Arxiv
0+阅读 · 2021年5月30日
Interpretable Adversarial Training for Text
Arxiv
5+阅读 · 2019年5月30日
Arxiv
4+阅读 · 2017年11月14日
VIP会员
相关VIP内容
专知会员服务
44+阅读 · 2021年5月26日
【耶鲁】数据结构与编程技术,656页pdf
专知会员服务
56+阅读 · 2021年4月26日
【耶鲁】数据结构与编程技术,572页pdf
专知会员服务
47+阅读 · 2020年12月27日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
79+阅读 · 2020年7月26日
【新书】Python编程基础,669页pdf
专知会员服务
195+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
94+阅读 · 2019年10月10日
知识图谱本体结构构建论文合集
专知会员服务
107+阅读 · 2019年10月9日
相关资讯
已删除
架构文摘
3+阅读 · 2019年4月17日
Hierarchical Disentangled Representations
CreateAMind
4+阅读 · 2018年4月15日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Top
微信扫码咨询专知VIP会员