Bug-fix benchmarks are fundamental in advancing various sub-fields of software engineering such as automatic program repair (APR) and fault localization (FL). A good benchmark must include recent examples that accurately reflect technologies and development practices of today. To be executable in the long term, a benchmark must feature test suites that do not degrade overtime due to, for example, dependencies that are no longer available. Existing benchmarks fail in meeting both criteria. For instance, Defects4J, one of the foremost Java benchmarks, last received an update in 2020. Moreover, full-reproducibility has been neglected by the majority of existing benchmarks. In this paper, we present GitBug-Actions: a novel tool for building bug-fix benchmarks with modern and fully-reproducible bug-fixes. GitBug-Actions relies on the most popular CI platform, GitHub Actions, to detect bug-fixes and smartly locally execute the CI pipeline in a controlled and reproducible environment. To the best of our knowledge, we are the first to rely on GitHub Actions to collect bug-fixes. To demonstrate our toolchain, we deploy GitBug-Actions to build a proof-of-concept Go bug-fix benchmark containing executable, fully-reproducible bug-fixes from different repositories. A video demonstrating GitBug-Actions is available at: https://youtu.be/aBWwa1sJYBs.
翻译:缺陷修复基准测试集对于推动软件工程各个子领域(如自动程序修复和故障定位)的发展至关重要。优秀的基准测试集需要包含能准确反映当前技术实践的最新案例,且需具备长期可执行性——其测试套件不会因依赖库失效等问题随时间退化。现有基准测试集难以同时满足这两项要求:例如,最主流的Java基准测试集Defects4J的最后更新停留在2020年,而绝大多数现有基准测试集忽视了完全可复现性。本文提出GitBug-Actions这一新型工具,用于构建包含现代且完全可复现缺陷修复方案的基准测试集。该工具依托最流行的CI平台GitHub Actions,通过智能检测缺陷修复过程,在受控且可复现的环境中本地执行CI流水线。据我们所知,这是首个基于GitHub Actions采集缺陷修复案例的研究。为验证该工具链的有效性,我们利用GitBug-Actions构建了包含来自不同仓库的可执行、完全可复现缺陷修复方案的Go语言概念验证基准测试集。GitBug-Actions演示视频见:https://youtu.be/aBWwa1sJYBs。