首页> 外文会议>Principles of programming languages >Compositional May-Must Program Analysis: Unleashing the Power of Alternation
【24h】

Compositional May-Must Program Analysis: Unleashing the Power of Alternation

机译:可能的五月组成程序分析:释放变更的力量

获取原文
获取原文并翻译 | 示例

摘要

Program analysis tools typically compute two types of information: (1) may information that is true of all program executions and is used to prove the absence of bugs in the program, and (2) must information that is true of some program executions and is used to prove the existence of bugs in the program. In this paper, we propose a new algorithm, dubbed Smash, which computes both may and must information compositionally. At each procedure boundary, may and must information is represented and stored as may and must summaries, respectively. Those summaries are computed in a demand-driven manner and possibly using summaries of the opposite type. We have implemented Smash using predicate abstraction (as in Slam) for the may part and using dynamic test generation (as in Dart) for the must part. Results of experiments with 69 Microsoft Windows 7 device drivers show that SMASH can significantly outperform may-only, must-only and non-compositional may-must algorithms. Indeed, our empirical results indicate that most complex code fragments in large programs are actually often either easy to prove irrelevant to the specific property of interest using may analysis or easy to traverse using directed testing. The fine-grained coupling and alternation of may (universal) and must (existential) summaries allows Smash to easily navigate through these code fragments while traditional may-only, must-only or non-compositional may-must algorithms are stuck in their specific analyses.
机译:程序分析工具通常计算两种类型的信息:(1)可能对所有程序执行都是真实的信息,并用于证明程序中不存在错误;(2)必须对某些程序执行是真实的信息,并且用来证明程序中是否存在错误。在本文中,我们提出了一种称为Smash的新算法,该算法可组合计算可能和必须的信息。在每个过程边界,可能和必须的信息分别表示为可能和必须的摘要并存储。这些摘要是按需求驱动的方式计算的,并可能使用相反类型的摘要。我们已经对May部分使用了谓词抽象(如Slam中),对must部分使用了动态测试生成(如Dart中)来实现Smash。使用69个Microsoft Windows 7设备驱动程序进行的实验结果表明,SMASH的性能明显优于仅可能,必须和非必须组成的算法。确实,我们的经验结果表明,大型程序中的大多数复杂代码片段实际上通常要么容易通过使用可能分析证明与感兴趣的特定特性无关,要么容易通过定向测试进行遍历。 may(通用)和must(现有)摘要的细粒度耦合和交替允许Smash轻松浏览这些代码片段,而传统的may-only,must-only或非组合may-must算法被困在其特定分析中。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号