Ammonia:一种推导项目特定缺陷模式的方法
软件工程
2020-09-04 v2
摘要
发现并修复有缺陷的代码是一项重要且成本高昂的维护任务,而静态分析(SA)是开发者用于执行该任务的方法之一。SA 工具通过扫描源代码以查找常见缺陷模式来警告开发者潜在的缺陷,从而让开发者有机会在发布软件前修复这些警告(潜在缺陷)。通常,SA 工具扫描的是任何软件项目共有的通用缺陷模式(如空指针解引用),而非项目特定的模式。然而,过去的研究指出这种可定制性的缺乏是 SA 中一个严重的限制问题。据此,本文提出一种称为 Ammonia 的方法,其基于对项目开发历史中变更进行静态分析,以识别项目特定的缺陷模式。此外,我们的工具识别的缺陷模式不限于单个开发者或某次特定提交,它们反映项目整体并补充其他识别通用缺陷模式的 SA 工具的警告。在此,我们报告了所实现工具与方法在四个 Java 项目上的应用:Ant、Camel、POI 和 Wicket。所得结果表明,我们的工具能在这四个项目中检测出 19 种项目特定缺陷模式。接着,通过人工分析,我们确定其中六种变更模式为实际缺陷,并基于这些缺陷模式提交了拉取请求。结果,其中五个拉取请求被合并。
引用
@article{arxiv.2001.09630,
title = {Ammonia: An Approach for Deriving Project-specific Bug Patterns},
author = {Yoshiki Higo and Shinpei Hayashi and Hideaki Hata and Meiyappan Nagappan},
journal= {arXiv preprint arXiv:2001.09630},
year = {2020}
}
备注
28 pages, Empirical Software Engineering