从版本控制系统中的人工补丁提取简洁的缺陷修复补丁
软件工程
2021-03-02 v1
摘要
从真实世界应用中收集的高质量、大规模真实缺陷及其简洁补丁仓库对软件工程界的研究至关重要。在此类仓库中,每个真实缺陷都显式关联其修复。因此,一方面,真实缺陷及其修复可能启发用于发现、定位和修复软件缺陷的新方法;另一方面,真实缺陷及其修复对于软件测试、故障定位和程序修复方法的严格且有意义的评估不可或缺。为此,已提出若干此类仓库,如 Defects4J。然而,此类仓库相当小,因为其构建涉及昂贵的人工干预。尽管缺陷修复代码提交及关联测试用例可从版本控制系统自动获取,现有方法尚不能从缺陷修复提交中自动提取简洁的缺陷修复补丁,因为此类提交常包含与缺陷无关的改动。本文提出一种称为 BugBuilder 的自动方法,从版本控制系统中的人工补丁提取完整且简洁的缺陷修复补丁。它通过检测缺陷修复提交中涉及的重构并在缺陷版本上重新应用所检测重构来排除重构。它枚举剩余部分的所有子集并在测试用例上验证。若无子集有可能成为完整缺陷修复补丁,则将剩余部分整体作为完整且简洁的缺陷修复补丁。在 Defects4J 中 809 个真实缺陷修复提交上的评估结果表明,BugBuilder 成功为百分之四十的缺陷修复提交生成了完整且简洁的缺陷修复补丁,且其精确率(99%)甚至高于人类专家。
引用
@article{arxiv.2103.00156,
title = {Extracting Concise Bug-Fixing Patches from Human-Written Patches in Version Control Systems},
author = {Yanjie Jiang and Hui Liu and Nan Niu and Lu Zhang and Yamin Hu},
journal= {arXiv preprint arXiv:2103.00156},
year = {2021}
}
备注
ICSE 2021