Neural Program Repair by Jointly Learning to Localize and Repair
arXiv:1904.01720
Abstract
Due to its potential to improve programmer productivity and software quality, automated program repair has been an active topic of research. Newer techniques harness neural networks to learn directly from examples of buggy programs and their fixes. In this work, we consider a recently identified class of bugs called variable-misuse bugs. The state-of-the-art solution for variable misuse enumerates potential fixes for all possible bug locations in a program, before selecting the best prediction. We show that it is beneficial to train a model that jointly and directly localizes and repairs variable-misuse bugs. We present multi-headed pointer networks for this purpose, with one head each for localization and repair. The experimental results show that the joint model significantly outperforms an enumerative solution that uses a pointer based model for repair alone.
arXiv commentICLR 2019
Cited by in corpus (20)
- WILDS: A Benchmark of in-the-Wild Distribution Shifts
- Semantic Robustness of Models of Source Code
- Bugs in Quantum Computing Platforms: An Empirical Study
- Graph-based, Self-Supervised Program Repair from Diagnostic Feedback
- Self-Supervised Bug Detection and Repair
- Understanding Neural Code Intelligence Through Program Simplification
- SCELMo: Source Code Embeddings from Language Models
- Code Prediction by Feeding Trees to Transformers
- Break-It-Fix-It: Unsupervised Learning for Program Repair
- Neural Bug Finding: A Study of Opportunities and Challenges
- Synthesize, Execute and Debug: Learning to Repair for Neural Program Synthesis
- A Survey on Machine Learning Techniques for Source Code Analysis
- Using Distributed Representation of Code for Bug Detection
- Learning Graph Structure With A Finite-State Automaton Layer
- Learning Semantic Program Embeddings with Graph Interval Neural Network
- Deep Learning for Bug-Localization in Student Programs
- Study of Distractors in Neural Models of Code
- Patching as Translation: the Data and the Metaphor
- A Controlled Experiment of Different Code Representations for Learning-Based Bug Repair
- DeepMutants: Training neural bug detectors with contextual mutations