# Program Repair

**Authors:** Xiang Gao, Yannic Noller, Abhik Roychoudhury  
**arXiv:** [2211.12787](https://arxiv.org/abs/2211.12787)  
**Date:** 2022-11-23  
**Summary page:** https://www.summarizepaper.com/en/arxiv-id/2211.12787v1/

## 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.

## Summary

Automated program repair (APR) is an emerging technology that utilizes a suite of techniques to automatically fix bugs or vulnerabilities in programs. In this comprehensive survey, Xiang Gao, Yannic Noller, and Abhik Roychoudhury explore the state of the art in program repair. They begin by examining the different techniques used in APR including search-based repair, constraint-based repair and learning-based repair. One of the main challenges in program repair is patch overfitting which they address by discussing a class of techniques that can alleviate this issue. The authors also delve into classes of program repair tools and their applications and uses in industry. They emphasize the importance of presenting evidence for generated patches to enable developers to select the best candidate efficiently. Additionally, APR side-products can be helpful even when APR tools cannot generate patches themselves. However, developers are not yet ready to trust APR completely; therefore more research is needed to improve its general capabilities and incorporate aspects that enable efficient patch review. Beyond this survey more 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. The authors also discuss language model-based code generation as an AI-based system for automatically solving programming tasks using transformer-based large-scale language models like Codex and AlphaCode. Overall this survey provides valuable insights into the current state of automated program repair while highlighting areas for improvement and future research opportunities.
