Hybrid Automated Program Repair by Combining Large Language Models and Program Analysis
<|reference_start|>Hybrid Automated Program Repair by Combining Large Language Models and Program Analysis: Automated Program Repair (APR) has garnered significant attention due to its potential to streamline the bug repair process for human developers. Recently, LLM-based APR methods have shown promise in repairing real-world bugs. However, existing APR methods often utilize patches generated by LLMs without further optimization, resulting in reduced effectiveness due to the lack of program-specific knowledge. Furthermore, the evaluations of these APR methods have typically been conducted under the assumption of perfect fault localization, which may not accurately reflect their real-world effectiveness. To address these limitations, this paper introduces an innovative APR approach called GIANTREPAIR. Our approach leverages the insight that LLM-generated patches, although not necessarily correct, offer valuable guidance for the patch generation process. Based on this insight, GIANTREPAIR first constructs patch skeletons from LLM-generated patches to confine the patch space, and then generates high-quality patches tailored to specific programs through context-aware patch generation by instantiating the skeletons. To evaluate the performance of our approach, we conduct two large-scale experiments. The results demonstrate that GIANTREPAIR not only effectively repairs more bugs (an average of 27.78% on Defects4J v1.2 and 23.40% on Defects4J v2.0) than using LLM-generated patches directly, but also outperforms state-of-the-art APR methods by repairing at least 42 and 7 more bugs under perfect and automated fault localization scenarios, respectively.<|reference_end|>
@article{li2024hybrid,
    title={Hybrid Automated Program Repair by Combining Large Language Models and
  Program Analysis},
    author={Fengjie Li, Jiajun Jiang, Jiajun Sun, Hongyu Zhang},
    journal={arXiv preprint arXiv:2406.00992},
    year={2024},
    archivePrefix={arXiv},
    eprint={2406.00992},
    primaryClass={cs.SE}
}