中文

利用 Bayesian 规约发现潜在错误

软件工程 2017-03-07 v1

摘要

我们提出了一个 Bayesian 框架,用于从大型非结构化代码语料库中学习概率规约,以及一种使用该框架静态检测异常(因而可能存在缺陷的)程序行为的方法。这里的独特见解是构建一个统计模型,将隐藏在语料库中的所有规约与实现这些规约的程序的语法和观察到的行为相关联。在对特定程序进行分析时,该模型被条件化为一个后验分布,该分布优先考虑与该程序相关的规约。这使得即使语料库高度异构,也能进行准确的程序分析。发现异常的问题现在被定量地构建为计算模型期望该程序产生的程序行为上的“参考分布”与该程序实际产生的行为分布之间距离的问题。我们提出了该框架的一个具体实例,它结合了主题模型和神经网络模型来学习规约,并查询学习到的模型以计算异常分数。我们在检测 Android API 异常用法的任务上评估了该实现。我们令人鼓舞的实验结果表明,该方法能够自动发现实际环境中 Android 应用程序的细微错误,并且与竞争的概率方法相比具有很高的精确率和召回率。

关键词

引用

@article{arxiv.1703.01370,
  title  = {Finding Likely Errors with Bayesian Specifications},
  author = {Vijayaraghavan Murali and Swarat Chaudhuri and Chris Jermaine},
  journal= {arXiv preprint arXiv:1703.01370},
  year   = {2017}
}