通过结合故障定位和代码变更历史识别导致错误的提交
软件工程
2025-02-20 v2
摘要
导致错误的提交(Bug Inducing Commit, BIC)是一种引入代码库错误的代码变更。尽管由错误引起的异常或意外行为可能不会立即显现,但最终会导致程序失败。当观察到程序失败时,识别相关 BIC 可有助于错误解决过程,因为了解原始意图和该变更背后的上下文,以及拥有该变更作者的链接,可促进错误分诊和调试。然而,现有的 BIC 识别技术存在局限性。二分法因需要对以前版本的代码库执行失败测试而计算成本高昂。其他技术依赖特定的事后证据,如错误报告或错误修复。本文提出一种称为 Fonte 的技术,旨在识别 BIC,其核心概念是:如果提交最近修改的代码元素高度可疑地包含错误,则该提交更可能是 BIC。为实现这一想法,Fonte 利用了软件中的两种基本关系:一种可以通过故障定位技术量化的 failure-to-code 关系,另一种可从版本控制系统获取的 code-to-commit 关系。我们的实证评估使用 206 个来自开源 Java 项目的真实 BIC,显示 Fonte 在 BIC 识别技术方面显著优于现有技术,实现了最高可达 45.8% 的更高平均检索率(MRR)。我们还报告了 Fonte 生成的排名分数可用于执行加权二分。最后,我们将 Fonte 应用于一个规模为 1000 万行代码的行业项目,表明它可在 87% 的 studied 真实批量测试失败中将实际 BIC 位于前五名提交中,并平均节省 32% 的 BIC 检查成本。
引用
@article{arxiv.2502.12922,
title = {Identifying Bug Inducing Commits by Combining Fault Localisation and Code Change Histories},
author = {Gabin An and Jinsu Choi and Jingun Hong and Naryeong Kim and Shin Yoo},
journal= {arXiv preprint arXiv:2502.12922},
year = {2025}
}
备注
14 pages, 10 figures. Extended version of Fonte (ICSE'23, arXiv:2212.06376)