Practical Program Repair via Preference-based Ensemble Strategy
arXiv:2309.08211 · doi:10.1145/3597503.3623310
Abstract
To date, over 40 Automated Program Repair (APR) tools have been designed with varying bug-fixing strategies, which have been demonstrated to have complementary performance in terms of being effective for different bug classes. Intuitively, it should be feasible to improve the overall bug-fixing performance of APR via assembling existing tools. Unfortunately, simply invoking all available APR tools for a given bug can result in unacceptable costs on APR execution as well as on patch validation (via expensive testing). Therefore, while assembling existing tools is appealing, it requires an efficient strategy to reconcile the need to fix more bugs and the requirements for practicality. In light of this problem, we propose a Preference-based Ensemble Program Repair framework (P-EPR), which seeks to effectively rank APR tools for repairing different bugs. P-EPR is the first non-learning-based APR ensemble method that is novel in its exploitation of repair patterns as a major source of knowledge for ranking APR tools and its reliance on a dynamic update strategy that enables it to immediately exploit and benefit from newly derived repair results. Experimental results show that P-EPR outperforms existing strategies significantly both in flexibility and effectiveness.
arXiv commentaccepted by icse2024 early
References in corpus (16)
- Neural Machine Translation by Jointly Learning to Align and Translate
- 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
- TBar: Revisiting Template-based Automated Program Repair
- CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
- 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
- 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
- CODIT: Code Editing with Tree-Based Neural Models
- 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