ContrastRepair: Enhancing Conversation-Based Automated Program Repair via Contrastive Test Case Pairs
<|reference_start|>ContrastRepair: Enhancing Conversation-Based Automated Program Repair via Contrastive Test Case Pairs: Automated Program Repair (APR) aims to automatically generate patches for rectifying software bugs. Recent strides in Large Language Models (LLM), such as ChatGPT, have yielded encouraging outcomes in APR, especially within the conversation-driven APR framework. Nevertheless, the efficacy of conversation-driven APR is contingent on the quality of the feedback information. In this paper, we propose ContrastRepair, a novel conversation-based APR approach that augments conversation-driven APR by providing LLMs with contrastive test pairs. A test pair consists of a failing test and a passing test, which offer contrastive feedback to the LLM. Our key insight is to minimize the difference between the generated passing test and the given failing test, which can better isolate the root causes of bugs. By providing informative and specific feedback, ContrastRepair enables the LLM to produce effective bug fixes. The implementation of ContrastRepair is based on the state-of-the-art LLM, ChatGPT, and it iteratively interacts with ChatGPT until plausible patches are generated. We evaluate ContrastRepair on multiple benchmark datasets, including Defects4j, QuixBugs, and HumanEval-Java. The results demonstrate that ContrastRepair significantly outperforms existing methods, achieving a new state-of-the-art in program repair. For instance, among Defects4j 1.2 and 2.0, ContrastRepair correctly repairs 143 out of all 337 bug cases, while the best-performing baseline fixes 124 bugs.<|reference_end|>
@article{kong2024contrastrepair:,
    title={ContrastRepair: Enhancing Conversation-Based Automated Program Repair
  via Contrastive Test Case Pairs},
    author={Jiaolong Kong, Mingfei Cheng, Xiaofei Xie, Shangqing Liu, Xiaoning Du,
  Qi Guo},
    journal={arXiv preprint arXiv:2403.01971},
    year={2024},
    archivePrefix={arXiv},
    eprint={2403.01971},
    primaryClass={cs.SE}
}