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.
翻译:缺陷修复基准数据集对于推动软件工程领域如自动程序修复(APR)和故障定位(FL)等子领域的发展至关重要。优秀的基准数据集必须包含能准确反映当前技术现状与开发实践的近期案例。为确保长期可执行性,基准数据集的测试套件不得因依赖项失效等问题随时间退化。现有基准数据集难以同时满足这两项要求。例如,作为顶级Java基准之一的Defects4J,其最近一次更新停留在2020年。此外,多数现有基准数据集忽视了完全可复现性。本文提出GitBug-Actions:一种构建包含现代且完全可复现缺陷修复的新颖工具。GitBug-Actions依托最流行的持续集成平台GitHub Actions,通过智能识别缺陷修复,并在受控可复现环境中本地执行CI流水线实现目标。据我们所知,这是首个基于GitHub Actions收集缺陷修复的工作。为验证该工具链,我们利用GitBug-Actions构建了一个概念验证型Go语言缺陷修复基准数据集,其中包含来自不同代码仓库的可执行、完全可复现的缺陷修复示例。GitBug-Actions演示视频可通过https://youtu.be/aBWwa1sJYBs 观看。