Bears: An Extensible Java Bug Benchmark for Automatic Program Repair Studies
arXiv:1901.06024 · doi:10.1109/SANER.2019.8667991
Abstract
Benchmarks of bugs are essential to empirically evaluate automatic program repair tools. In this paper, we present Bears, a project for collecting and storing bugs into an extensible bug benchmark for automatic repair studies in Java. The collection of bugs relies on commit building state from Continuous Integration (CI) to find potential pairs of buggy and patched program versions from open-source projects hosted on GitHub. Each pair of program versions passes through a pipeline where an attempt of reproducing a bug and its patch is performed. The core step of the reproduction pipeline is the execution of the test suite of the program on both program versions. If a test failure is found in the buggy program version candidate and no test failure is found in its patched program version candidate, a bug and its patch were successfully reproduced. The uniqueness of Bears is the usage of CI (builds) to identify buggy and patched program version candidates, which has been widely adopted in the last years in open-source projects. This approach allows us to collect bugs from a diversity of projects beyond mature projects that use bug tracking systems. Moreover, Bears was designed to be publicly available and to be easily extensible by the research community through automatic creation of branches with bugs in a given GitHub repository, which can be used for pull requests in the Bears repository. We present in this paper the approach employed by Bears, and we deliver the version 1.0 of Bears, which contains 251 reproducible bugs collected from 72 projects that use the Travis CI and Maven build environment.
Proceedings of the 26th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER '19)
References in corpus (5)
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- Automatic Software Repair: a Bibliography
- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
- Dynamic Patch Generation for Null Pointer Exceptions using Metaprogramming
- How to Design a Program Repair Bot? Insights from the Repairnator Project
Cited by in corpus (18)
- TBar: Revisiting Template-based Automated Program Repair
- CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
- Neural Program Repair with Execution-based Backpropagation
- On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
- How Effective Are Neural Networks for Fixing Security Vulnerabilities
- Automated Classification of Overfitting Patches with Statically Extracted Code Features
- Automated Patch Assessment for Program Repair at Scale
- GitBug-Java: A Reproducible Benchmark of Recent Java Bugs
- Is this Change the Answer to that Problem? Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness
- An Approach and Benchmark to Detect Behavioral Changes of Commits in Continuous Integration
- A Comprehensive Study on Quality Assurance Tools for Java
- A Comprehensive Study of Code-removal Patches in Automated Program Repair
- Practical Program Repair via Preference-based Ensemble Strategy
- RepairBench: Leaderboard of Frontier Models for Program Repair
- BUMP: A Benchmark of Reproducible Breaking Dependency Updates
- ROBUST: 221 Bugs in the Robot Operating System
- STEAM: Simulating the InTeractive BEhavior of ProgrAMmers for Automatic Bug Fixing
- Black-Box Bug-Amplification for Multithreaded Software