当前位置: X-MOL 学术Empir. Software Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Ammonia: an approach for deriving project-specific bug patterns
Empirical Software Engineering ( IF 3.5 ) Pub Date : 2020-03-07 , DOI: 10.1007/s10664-020-09807-w
Yoshiki Higo , Shinpei Hayashi , Hideaki Hata , Meiyappan Nagappan

Finding and fixing buggy code is an important and cost-intensive maintenance task, and static analysis (SA) is one of the methods developers use to perform it. SA tools warn developers about potential bugs by scanning their source code for commonly occurring bug patterns, thus giving those developers opportunities to fix the warnings (potential bugs) before they release the software. Typically, SA tools scan for general bug patterns that are common to any software project (such as null pointer dereference), and not for project specific patterns. However, past research has pointed to this lack of customizability as a severe limiting issue in SA. Accordingly, in this paper, we propose an approach called Ammonia , which is based on statically analyzing changes across the development history of a project, as a means to identify project-specific bug patterns. Furthermore, the bug patterns identified by our tool do not relate to just one developer or one specific commit, they reflect the project as a whole and compliment the warnings from other SA tools that identify general bug patterns. Herein, we report on the application of our implemented tool and approach to four Java projects: Ant , Camel , POI , and Wicket . The results obtained show that our tool could detect 19 project specific bug patterns across those four projects. Next, through manual analysis, we determined that six of those change patterns were actual bugs and submitted pull requests based on those bug patterns. As a result, five of the pull requests were merged.

中文翻译:

氨:一种推导项目特定错误模式的方法

查找和修复错误代码是一项重要且成本密集的维护任务,而静态分析 (SA) 是开发人员用来执行它的方法之一。SA 工具通过扫描他们的源代码中常见的错误模式来警告开发人员潜在的错误,从而让这些开发人员有机会在发布软件之前修复警告(潜在错误)。通常,SA 工具会扫描任何软件项目常见的一般错误模式(例如空指针取消引用),而不是项目特定模式。然而,过去的研究指出,缺乏可定制性是 SA 中的一个严重限制问题。因此,在本文中,我们提出了一种称为 Ammonia 的方法,该方法基于静态分析项目开发历史中的变化,作为识别项目特定错误模式的一种手段。此外,我们的工具识别的错误模式不仅仅与一个开发人员或一个特定的提交相关,它们反映了整个项目,并补充了其他 SA 工具识别一般错误模式的警告。在此,我们报告了我们实现的工具和方法在四个 Java 项目中的应用: Ant 、 Camel 、 POI 和 Wicket 。获得的结果表明,我们的工具可以在这四个项目中检测 19 个项目特定的错误模式。接下来,通过手动分析,我们确定其中六个变更模式是实际的错误,并根据这些错误模式提交了拉取请求。结果,合并了五个拉取请求。它们反映了整个项目,并补充了来自其他 SA 工具的警告,这些警告识别了一般错误模式。在此,我们报告了我们实现的工具和方法在四个 Java 项目中的应用: Ant 、 Camel 、 POI 和 Wicket 。获得的结果表明,我们的工具可以在这四个项目中检测 19 个项目特定的错误模式。接下来,通过手动分析,我们确定其中六个变更模式是实际的错误,并根据这些错误模式提交了拉取请求。结果,合并了五个拉取请求。它们反映了整个项目,并补充了来自其他 SA 工具的警告,这些警告识别了一般错误模式。在此,我们报告了我们实现的工具和方法在四个 Java 项目中的应用: Ant 、 Camel 、 POI 和 Wicket 。获得的结果表明,我们的工具可以在这四个项目中检测 19 个项目特定的错误模式。接下来,通过手动分析,我们确定其中六个变更模式是实际的错误,并根据这些错误模式提交了拉取请求。结果,合并了五个拉取请求。获得的结果表明,我们的工具可以在这四个项目中检测 19 个项目特定的错误模式。接下来,通过手动分析,我们确定其中六个变更模式是实际的错误,并根据这些错误模式提交了拉取请求。结果,合并了五个拉取请求。获得的结果表明,我们的工具可以在这四个项目中检测 19 个项目特定的错误模式。接下来,通过手动分析,我们确定其中六个变更模式是实际的错误,并根据这些错误模式提交了拉取请求。结果,合并了五个拉取请求。
更新日期:2020-03-07
down
wechat
bug