Towards Practical and Useful Automated Program Repair for Debugging
Qi Xin, Haojun Wu, Steven P. Reiss, Jifeng Xuan
TL;DR
The paper argues that practical automated program repair (APR) remains limited by assumptions such as test-suite dependence and frequent re-execution, hindering its use in real debugging. It proposes PracAPR, an IDE-integrated repair system that operates without a test suite or program re-execution, using test-free fault localization, LLM-based local repair, and tailored global repair, with patch validation based on simulated traces. The authors build on ROSE, a test-free repair framework, and report promising results: ROSE localizes repair locations with 89% accuracy and achieves top-5 patch ranking, repairing many QuixBugs and Defects4J bugs rapidly, while reducing debugging time by about 16.5%. Future work includes improving problem specification, exploring learning-based trace comparison for validation, and developing a suite of specialized patch generators and ensemble strategies for robust, multi-location repair.
Abstract
Current automated program repair (APR) techniques are far from being practical and useful enough to be considered for realistic debugging. They rely on unrealistic assumptions including the requirement of a comprehensive suite of test cases as the correctness criterion and frequent program re-execution for patch validation; they are not fast; and their ability of repairing the commonly arising complex bugs by fixing multiple locations of the program is very limited. We hope to substantially improve APR's practicality, effectiveness, and usefulness to help people debug. Towards this goal, we envision PracAPR, an interactive repair system that works in an Integrated Development Environment (IDE) to provide effective repair suggestions for debugging. PracAPR does not require a test suite or program re-execution. It assumes that the developer uses an IDE debugger and the program has suspended at a location where a problem is observed. It interacts with the developer to obtain a problem specification. Based on the specification, it performs test-free, flow-analysis-based fault localization, patch generation that combines large language model-based local repair and tailored strategy-driven global repair, and program re-execution-free patch validation based on simulated trace comparison to suggest repairs. By having PracAPR, we hope to take a significant step towards making APR useful and an everyday part of debugging.
