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依赖最流行的CI平台GitHub Actions来检测缺陷修复,并在可控且可复现的环境中智能地本地执行CI流水线。据我们所知,我们是首个依赖GitHub Actions收集缺陷修复的工作。为展示我们的工具链,我们部署GitBug-Actions构建了一个Go语言缺陷修复概念验证基准,其中包含来自不同仓库的可执行、全可复现的缺陷修复案例。GitBug-Actions的演示视频参见:https://youtu.be/aBWwa1sJYBs。