Program Repair
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.
Authors: Xiang Gao, Yannic Noller, Abhik Roychoudhury
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.
Ask questions about this paper to our AI assistant
You can also chat with multiple papers at once here.
Assess the quality of the AI-generated content by voting
Score: 0
Why do we need votes?
Votes are used to determine whether we need to re-run our summarizing tools. If the count reaches -10, our tools can be restarted.
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 will scan all papers in our database to find the closest based on the contents of the full papers and not just on metadata. Please note that it only works for papers that we have generated summaries for and you can rerun it from time to time to get a more accurate result while 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.