Elixir: Effective object-oriented program repair
arXiv:2112.10915 · doi:10.1109/ASE.2017.8115675
Abstract
This work is motivated by the pervasive use of method invocations in object-oriented (OO) programs, and indeed their prevalence in patches of OO-program bugs. We propose a generate-and-validate repair technique, called ELIXIR designed to be able to generate such patches. ELIXIR aggressively uses method calls, on par with local variables, fields, or constants, to construct more expressive repair-expressions, that go into synthesizing patches. The ensuing enlargement of the repair space, on account of the wider use of method calls, is effectively tackled by using a machine-learnt model to rank concrete repairs. The machine-learnt model relies on four features derived from the program context, i.e., the code surrounding the potential repair location, and the bug report. We implement ELIXIR and evaluate it on two datasets, the popular Defects4J dataset and a new dataset Bugs.jar created by us, and against 2 baseline versions of our technique, and 5 other techniques representing the state of the art in program repair. Our evaluation shows that ELIXIR is able to increase the number of correctly repaired bugs in Defects4J by 85% (from 14 to 26) and by 57% in Bugs.jar (from 14 to 22), while also significantly out-performing other state-of-the-art repair techniques including ACS, HD-Repair, NOPOL, PAR, and jGenProg.
Cited by in corpus (11)
- On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
- Empirical Review of Java Program Repair Tools: A Large-Scale Experiment on 2,141 Bugs and 23,551 Repair Attempts
- Automatic Testing and Improvement of Machine Translation
- PRF: A Framework for Building Automatic Program Repair Prototypes for JVM-Based Languages
- Revisiting ssFix for Better Program Repair
- DevReplay: Automatic Repair with Editable Fix Pattern
- Can Automated Program Repair Refine Fault Localization?
- Interactive Patch Filtering as Debugging Aid
- Self-Boosted Automated Program Repair
- Automatic Program Repair with OpenAI's Codex: Evaluating QuixBugs
- FlexiRepair: Transparent Program Repair with Generic Patches