Program Repair
Authors: Xiang Gao, Yannic Noller, Abhik Roychoudhury
AI-generated Key Points
- Automated program repair (APR) is a technology that automatically fixes bugs or vulnerabilities in programs.
- Different techniques used in APR include search-based repair, constraint-based repair, and learning-based repair.
- One of the main challenges in program repair is patch overfitting which can be addressed by certain techniques.
- There are different classes of program repair tools and their applications and uses in industry.
- Evidence for generated patches should be presented to enable developers to select the best candidate efficiently.
- APR side-products can be helpful even when APR tools cannot generate patches themselves.
- More research is needed to improve general capabilities of APR and incorporate aspects that enable efficient patch review.
- User studies are required to identify workflows that can work and be accepted in practice.
- The interaction between repair tools and software developers will need more focus in the future.
- Language model-based code generation using transformer-based large-scale language models like Codex and AlphaCode is discussed as an AI-based system for automatically solving programming tasks.
Abstract: Automated program repair is an emerging technology which consists of a suite of techniques to automatically fix bugs or vulnerabilities in programs. In this paper, we present a comprehensive survey of the state of the art in program repair. We first study the different suite of techniques used including search based repair, constraint based repair and learning based repair. We then discuss one of the main challenges in program repair namely patch overfitting, by distilling a class of techniques which can alleviate patch overfitting. We then discuss classes of program repair tools, applications of program repair as well as uses of program repair in industry. We conclude the survey with a forward looking outlook on future usages of program repair, as well as research opportunities arising from work on code from large language models.
Tools for this paper
Ask questions about this paper to our AI assistant
You can also chat with multiple papers at once here.
The previous summary was created more than a year ago and can be re-run (if necessary) by clicking on the Run button below.
Similar papers summarized with our AI tools
Navigate through even more similar papers through a
tree representationLook for similar papers (in beta version)
By clicking on the button above, our algorithm compares the title and abstract of this paper with all the papers of the same arXiv category that we have summarized, and finds the closest ones. You can rerun it from time to time: the results improve as our database grows.
Disclaimer: The AI-based summarization tool and virtual assistant provided on this website may not always provide accurate and complete summaries or responses. We encourage you to carefully review and evaluate the generated content to ensure its quality and relevance to your needs.