Automatic Repair of Real Bugs in Java: A Large-Scale Experiment on the Defects4J Dataset
arXiv:1811.02429 · doi:10.1007/s10664-016-9470-4
Abstract
Defects4J is a large, peer-reviewed, structured dataset of real-world Java bugs. Each bug in Defects4J comes with a test suite and at least one failing test case that triggers the bug. In this paper, we report on an experiment to explore the effectiveness of automatic test-suite based repair on Defects4J. The result of our experiment shows that the considered state-of-the-art repair methods can generate patches for 47 out of 224 bugs. However, those patches are only test-suite adequate, which means that they pass the test suite and may potentially be incorrect beyond the test-suite satisfaction correctness criterion. We have manually analyzed 84 different patches to assess their real correctness. In total, 9 real Java bugs can be correctly repaired with test-suite based repair. This analysis shows that test-suite based repair suffers from under-specified bugs, for which trivial or incorrect patches still pass the test suite. With respect to practical applicability, it takes on average 14.8 minutes to find a patch. The experiment was done on a scientific grid, totaling 17.6 days of computation time. All the repair systems and experimental results are publicly available on Github in order to facilitate future research on automatic repair.
arXiv commentEmpirical Software Engineering, Springer, 2016. arXiv admin note: substantial text overlap with arXiv:1505.07002
References in corpus (6)
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- A Critical Review of "Automatic Patch Generation Learned from Human-Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair
- Automated Fixing of Programs with Contracts
- Automatic Repair of Buggy If Conditions and Missing Preconditions with SMT
- Test Case Purification for Improving Fault Localization
- Do the Fix Ingredients Already Exist? An Empirical Inquiry into the Redundancy Assumptions of Program Repair Approaches
Cited by in corpus (55)
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair
- Automatic Software Repair: a Bibliography
- Less Training, More Repairing Please: Revisiting Automated Program Repair via Zero-shot Learning
- Elixir: Effective object-oriented program repair
- FixMiner: Mining Relevant Fix Patterns for Automated Program Repair
- Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities
- Identifying Patch Correctness in Test-Based Program Repair
- Neural Program Repair with Execution-based Backpropagation
- Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT
- BugsInPy: A Database of Existing Bugs in Python Programs to Enable Controlled Testing and Debugging Studies
- A Quantitative and Qualitative Evaluation of LLM-Based Explainable Fault Localization
- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
- Copiloting the Copilots: Fusing Large Language Models with Completion Engines for Automated Program Repair
- Dynamic Patch Generation for Null Pointer Exceptions using Metaprogramming
- Ultra-Large Repair Search Space with Automatically Mined Templates: the Cardumen Mode of Astor
- Deep Learning-based Software Engineering: Progress, Challenges, and Opportunities
- Automated Classification of Overfitting Patches with Statically Extracted Code Features
- How to Design a Program Repair Bot? Insights from the Repairnator Project
- Automated Patch Assessment for Program Repair at Scale
- A Comprehensive Study of Automatic Program Repair on the QuixBugs Benchmark
- Alleviating Patch Overfitting with Automatic Test Generation: A Study of Feasibility and Effectiveness for the Nopol Repair System
- Astor: Exploring the Design Space of Generate-and-Validate Program Repair beyond GenProg
- Repairnator patches programs automatically
- An Empirical Analysis of the Influence of Fault Space on Search-Based Automated Program Repair
- I Want My App That Way: Reclaiming Sovereignty Over Personal Devices
- Invalidator: Automated Patch Correctness Assessment via Semantic and Syntactic Reasoning
- Test Case Generation for Program Repair: A Study of Feasibility and Effectiveness
- Recommending Stack Overflow Posts for Fixing Runtime Exceptions using Failure Scenario Matching
- ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming
- RESTORE: Retrospective Fault Localization Enhancing Automated Program Repair
- A Comprehensive Study of Code-removal Patches in Automated Program Repair
- Automated Repair of Resource Leaks in Android Applications
- Automated Misconfiguration Repair of Configurable Cyber-Physical Systems with Search: an Industrial Case Study on Elevator Dispatching Algorithms
- Generating Class-Level Integration Tests Using Call Site Information
- Test-based Patch Clustering for Automatically-Generated Patches Assessment
- Mining Fix Patterns for FindBugs Violations
- Empirical Review of Java Program Repair Tools: A Large-Scale Experiment on 2,141 Bugs and 23,551 Repair Attempts
- Multi-Location Program Repair Strategies Learned from Past Successful Experience
- Estimating the Potential of Program Repair Search Spaces with Commit Analysis
- Can Automated Program Repair Refine Fault Localization?
- Extracting Concise Bug-Fixing Patches from Human-Written Patches in Version Control Systems
- Production-Driven Patch Generation and Validation
- AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations
- You Cannot Fix What You Cannot Find! An Investigation of Fault Localization Bias in Benchmarking Automated Program Repair Systems
- Obstacles in Fully Automatic Program Repair: A survey
- Practical Program Repair via Bytecode Mutation
- How Different Is It Between Machine-Generated and Developer-Provided Patches? An Empirical Study on The Correct Patches Generated by Automated Program Repair Techniques
- Can defects be fixed with weak test suites? An analysis of 50 defects from Defects4J
- Prioritizing documentation effort: Can we do better?
- A Taxonomy of Real Faults in Hybrid Quantum-Classical Architectures
- CrossFix: Collaborative bug fixing by recommending similar bugs
- Patch Quality and Diversity of Invariant-Guided Search-Based Program Repair
- On Reliability of Patch Correctness Assessment
- Attention Please: Consider Mockito when Evaluating Newly Proposed Automated Program Repair Techniques