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.
References in corpus (2)
Cited by in corpus (39)
- SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair
- CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
- FixMiner: Mining Relevant Fix Patterns for Automated Program Repair
- Neural Program Repair with Execution-based Backpropagation
- Natural Language Generation and Understanding of Big Code for AI-Assisted Programming: A Review
- 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
- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
- Automated Patch Assessment for Program Repair at Scale
- Learning to Generate Corrective Patches using Neural Machine Translation
- Astor: Exploring the Design Space of Generate-and-Validate Program Repair beyond GenProg
- Revisiting the Plastic Surgery Hypothesis via Large Language Models
- RESTORE: Retrospective Fault Localization Enhancing Automated Program Repair
- IBIR: Bug Report driven Fault Injection
- A Survey on Machine Learning Techniques for Source Code Analysis
- Automated Repair of Resource Leaks in Android Applications
- A Comprehensive Study of Code-removal Patches in Automated Program Repair
- ENCORE: Ensemble Learning using Convolution Neural Machine Translation for Automatic Program Repair
- Learning the Relation between Code Features and Code Transforms with Structured Prediction
- Practical Program Repair via Preference-based Ensemble Strategy
- Empirical Review of Java Program Repair Tools: A Large-Scale Experiment on 2,141 Bugs and 23,551 Repair Attempts
- The Coming Era of AlphaHacking? A Survey of Automatic Software Vulnerability Detection, Exploitation and Patching Techniques
- PRF: A Framework for Building Automatic Program Repair Prototypes for JVM-Based Languages
- Revisiting ssFix for Better Program Repair
- Automatic Testing and Improvement of Machine Translation
- DevReplay: Automatic Repair with Editable Fix Pattern
- Estimating the Potential of Program Repair Search Spaces with Commit Analysis
- Interactive Patch Filtering as Debugging Aid
- Can Automated Program Repair Refine Fault Localization?
- Self-Boosted Automated Program Repair
- Practical Program Repair via Bytecode Mutation
- Automatic Program Repair with OpenAI's Codex: Evaluating QuixBugs
- Impact of Combining Syntactic and Semantic Similarities on Patch Prioritization while using the Insertion Mutation Operators
- 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
- When Automated Program Repair Meets Regression Testing -- An Extensive Study on 2 Million Patches
- FlexiRepair: Transparent Program Repair with Generic Patches
- Out of Context: How important is Local Context in Neural Program Repair?
- Show Me Why It's Correct: Saving 1/3 of Debugging Time in Program Repair with Interactive Runtime Comparison