ContrastRepair: Enhancing Conversation-Based Automated Program Repair via Contrastive Test Case Pairs

2024年03月04日
  • 简介
    自动程序修复(APR)旨在自动生成用于纠正软件漏洞的补丁。最近,大型语言模型(LLM),如ChatGPT,在基于对话的APR框架中取得了令人鼓舞的成果。然而,基于对话的APR的功效取决于反馈信息的质量。本文提出了一种新颖的基于对话的APR方法ContrastRepair,它通过提供对比测试对来增强基于对话的APR。测试对包括一个失败的测试和一个通过的测试,它们为LLM提供对比反馈。我们的关键洞察力是最小化生成的通过测试和给定的失败测试之间的差异,这可以更好地隔离漏洞的根本原因。通过提供信息丰富且具体的反馈,ContrastRepair使LLM能够产生有效的漏洞修复。ContrastRepair的实现基于最先进的LLM ChatGPT,并且它与ChatGPT进行迭代交互,直到生成合理的补丁。我们在多个基准数据集上评估了ContrastRepair,包括Defects4j、QuixBugs和HumanEval-Java。结果表明,ContrastRepair明显优于现有方法,在程序修复方面达到了新的最高水平。例如,在Defects4j 1.2和2.0中,ContrastRepair正确修复了所有337个漏洞案例中的143个漏洞,而最佳基准线修复了124个漏洞。
  • 解决问题
    本论文旨在提高自动程序修复的效率,通过提供对比性测试对话,增强对话驱动的自动程序修复方法的反馈信息质量。
  • 关键思路
    论文提出了ContrastRepair,一种基于对比性测试对话的自动程序修复方法,通过提供对比性的测试对话,最小化生成通过测试与给定失败测试之间的差异,从而更好地确定错误根源,进而生成有效的修复程序。
  • 其它亮点
    ContrastRepair使用了ChatGPT这一最先进的大型语言模型,并在多个基准数据集上进行了评估,包括Defects4j、QuixBugs和HumanEval-Java。实验结果表明,ContrastRepair在程序修复方面取得了显著的成果,明显优于现有方法,达到了最新的技术水平。
  • 相关研究
    与本文相关的研究包括:DeepFix: Fixing Common C Language Errors by Deep Learning和SemFix: Program Repair via Semantic Analysis等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论