On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
arXiv:2008.00914 · doi:10.1145/3377811.3380338
Abstract
Test-based automated program repair has been a prolific field of research in software engineering in the last decade. Many approaches have indeed been proposed, which leverage test suites as a weak, but affordable, approximation to program specifications. Although the literature regularly sets new records on the number of benchmark bugs that can be fixed, several studies increasingly raise concerns about the limitations and biases of state-of-the-art approaches. For example, the correctness of generated patches has been questioned in a number of studies, while other researchers pointed out that evaluation schemes may be misleading with respect to the processing of fault localization results. Nevertheless, there is little work addressing the efficiency of patch generation, with regard to the practicality of program repair. In this paper, we fill this gap in the literature, by providing an extensive review on the efficiency of test suite based program repair. Our objective is to assess the number of generated patch candidates, since this information is correlated to (1) the strategy to traverse the search space efficiently in order to select sensical repair attempts, (2) the strategy to minimize the test effort for identifying a plausible patch, (3) as well as the strategy to prioritize the generation of a correct patch. To that end, we perform a large-scale empirical study on the efficiency, in terms of quantity of generated patch candidates of the 16 open-source repair tools for Java programs. The experiments are carefully conducted under the same fault localization configurations to limit biases.
References in corpus (12)
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- Automatic Software Repair: a Bibliography
- TBar: Revisiting Template-based Automated Program Repair
- Elixir: Effective object-oriented program repair
- A Critical Review of "Automatic Patch Generation Learned from Human-Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair
- Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities
- Identifying Patch Correctness in Test-Based Program Repair
- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
- Bears: An Extensible Java Bug Benchmark for Automatic Program Repair Studies
- Ultra-Large Repair Search Space with Automatically Mined Templates: the Cardumen Mode of Astor
- 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 (24)
- CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
- Neural Program Repair with Execution-based Backpropagation
- SelfAPR: Self-supervised Program Repair with Test Execution Diagnostics
- ITER: Iterative Neural Repair for Multi-Location Patches
- Neural Program Repair: Systems, Challenges and Solutions
- Invalidator: Automated Patch Correctness Assessment via Semantic and Syntactic Reasoning
- Is this Change the Answer to that Problem? Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness
- Accelerating Patch Validation for Program Repair with Interception-Based Execution Scheduling
- A Survey on Machine Learning Techniques for Source Code Analysis
- T5APR: Empowering Automated Program Repair across Languages through Checkpoint Ensemble
- A Comprehensive Study of Code-removal Patches in Automated Program Repair
- Learning the Relation between Code Features and Code Transforms with Structured Prediction
- Practical Program Repair via Preference-based Ensemble Strategy
- Evaluating Representation Learning of Code Changes for Predicting Patch Correctness in Program Repair
- Test-based Patch Clustering for Automatically-Generated Patches Assessment
- Beep: Fine-grained Fix Localization by Learning to Predict Buggy Code Elements
- Fast and Precise On-the-fly Patch Validation for All
- Energy Consumption of Automated Program Repair
- Estimating the Potential of Program Repair Search Spaces with Commit Analysis
- Self-Boosted Automated Program Repair
- SPVR: syntax-to-prompt vulnerability repair based on large language models
- When Automated Program Repair Meets Regression Testing -- An Extensive Study on 2 Million Patches
- MultiMend: Multilingual Program Repair with Context Augmentation and Multi-Hunk Patch Generation
- FlexiRepair: Transparent Program Repair with Generic Patches