当前位置: X-MOL 学术IEEE Trans. Softw. Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
BugBuilder: An Automated Approach to Building Bug Repository
IEEE Transactions on Software Engineering ( IF 6.5 ) Pub Date : 5-26-2022 , DOI: 10.1109/tse.2022.3177713
Yanjie Jiang 1 , Hui Liu 2 , Xiaoqing Luo 3 , Zhihao Zhu 3 , Xiaye Chi 3 , Nan Niu 4 , Yuxia Zhang 5 , Yamin Hu 3 , Pan Bian 6 , Lu Zhang 7
Affiliation  

Bug-related research, e.g., fault localization, program repair, and software testing, relies heavily on high-quality and large-scale software bug repositories. The importance of such repositories is twofold. On one side, real-world bugs and their associated patches may inspire novel approaches for finding, locating, and repairing software bugs. On the other side, the real-world bugs and their patches are indispensable for rigorous and meaningful evaluation of approaches to software testing, fault localization, and program repair. To this end, a number of software bug repositories, e.g., iBUGS and Defects4J, have been constructed recently by mining version control systems and bug tracking systems. However, fully automated construction of bug repositories by simply taking bug-fixing commits from version control systems often results in inaccurate patches that contain many bug-irrelevant changes. Although we may request experts or developers to manually exclude the bug-irrelevant changes (as the authors of Defects4J did), such extensive human intervention makes it difficult to build large-scale bug repositories. To this end, in this paper, we propose an automatic approach, called BugBuilder, to construct bug repositories from version control systems. Different from existing approaches, it automatically extracts complete and concise bug-fixing patches and excludes bug-irrelevant changes. It first detects and excludes software refactorings involved in bug-fixing commits. BugBuilder then enumerates all subsets of the remaining part, and discards invalid subsets by compilation and software testing. If exactly a single subset survives the validation, this subset is taken as the complete and concise bug-fixing patch for the associated bug. In case multiple subsets survive, BugBuilder employs a sequence of heuristics to select the most likely one. Evaluation results on 809 real-world bug-fixing commits in Defects4J suggest that BugBuilder successfully extracted complete and concise bug-fixing patches from forty-three percent of the bug-fixing commits, and its precision (99%) was even higher than human experts. We also built a bug repository, called GrowingBugs, with the proposed approach. The resulting repository serves as evidence of the usefulness of the proposed approach, as well as a publicly available benchmark for bug-related research.

中文翻译:


BugBuilder:构建 Bug 存储库的自动化方法



故障定位、程序修复、软件测试等与Bug相关的研究,很大程度上依赖于高质量、大规模的软件Bug库。此类存储库的重要性是双重的。一方面,现实世界的错误及其相关补丁可能会激发寻找、定位和修复软件错误的新方法。另一方面,现实世界中的错误及其补丁对于对软件测试、故障定位和程序修复方法进行严格且有意义的评估是必不可少的。为此,最近通过挖掘版本控制系统和错误跟踪系统构建了许多软件错误存储库,例如iBUGS和Defects4J。然而,通过简单地从版本控制系统获取错误修复提交来完全自动化地构建错误存储库通常会导致包含许多与错误无关的更改的不准确补丁。尽管我们可能会要求专家或开发人员手动排除与错误无关的更改(正如 Defects4J 的作者所做的那样),但如此广泛的人为干预使得构建大规模错误存储库变得困难。为此,在本文中,我们提出了一种称为 BugBuilder 的自动方法,用于从版本控制系统构建错误存储库。与现有方法不同,它自动提取完整且简洁的错误修复补丁,并排除与错误无关的更改。它首先检测并排除错误修复提交中涉及的软件重构。然后BugBuilder枚举剩余部分的所有子集,并通过编译和软件测试丢弃无效的子集。如果恰好有一个子集通过了验证,则该子集将被视为相关错误的完整且简洁的错误修复补丁。 如果有多个子集幸存下来,BugBuilder 会采用一系列启发式方法来选择最有可能的一个。 Defects4J 对 809 个真实 bug 修复提交的评估结果表明,BugBuilder 成功从 43% 的 bug 修复提交中提取出完整、简洁的 bug 修复补丁,其精度(99%)甚至高于人类专家。我们还使用所提出的方法构建了一个名为 GrowingBugs 的错误存储库。由此产生的存储库可以作为所提出方法的有用性的证据,以及错误相关研究的公开基准。
更新日期:2024-08-26
down
wechat
bug