LLM2D
增强自动程序修复的解决方案设计
Enhancing Automated Program Repair with Solution Design
发布日期: 9/24/2024
arXiv ID: oai:arXiv.org:2408.12056v2

摘要

自动程序修复(APR)旨在自主修正特定项目中的问题,通常包括三类任务:错误修复、新功能开发和功能增强。尽管已有大量研究提出了各种方法,但它们在解决实际问题上的效果仍不尽如人意。值得注意的是,通常工程师在开始修补代码之前会针对解决方案设计出设计理由(DR)并有一套基本的原因。在开源项目中,这些设计理由经常通过项目管理工具如Jira记录在问题日志中。这引发了一个引人注目的问题:我们如何利用分散在问题日志中的设计理由来有效提升APR?为探讨这一前提,我们引入了DRCodePilot,这是一种通过将设计理由引入提示指令来增强GPT-4-Turbo的APR能力的方法。此外,鉴于GPT-4在完全理解更广泛的项目背景和生成精确标识符方面的局限性,我们设计了一种基于反馈的自反思框架,我们提示GPT-4通过参考提供的补丁和建议的标识符来重新考虑和改进其输出。我们建立了一个基准,包含来自两个托管在GitHub和Jira上的开源库的938个问题-补丁对。我们的实验结果令人印象深刻:DRCodePilot实现了完全匹配率,比直接使用GPT-4高出4.7倍。此外,CodeBLEU分数也显示出有希望的改进。此外,我们的研究结果表明,单独应用设计理由可以在我们的基准套件中的CodeLlama、GPT-3.5和GPT-4上显著提高完全匹配率。我们相信,DRCodePilot的倡议预示着一种新的“人在回路中”的途径,将推进APR领域的发展。