1 introduction
文章标题翻译过来就是:只要两块五毛钱,ChatGPT帮你修bug。所以本文的核心思想就是,通过和chatgpt"对谈‘,使得chatgpt自动化修复程序代码。
2 方法概述图 overview
step1:首先告诉ChatGPT,它的定位就是“You are an Automated Program Repair tool”
step2:在对ChatGPT进行提问时,必须要告诉ta所遇到的bug导致的报错信息(这种报错信息一般是代码无法通过已有的标准测试用例产生的),这样ChatGPT就会变得更聪明。
·用填充的位置指示器替换函数中有错误的代码完全≪INFILL≫
·提供原始的bug行
·失败的测试1)它的名称,2)触发测试失败的相关代码行,以及3)产生的错误信息
通过 test suite (测试套件)判断 patch 是否成立,如果成立进入下一阶段,如果不成立持续询问 Chatgpt 直到获取一个 plausible patch(进入step3)
step3:ChatGPT很可能第一次没法给出正确的bug修复建议,但是你把上一次有问题的修复建议产生的报错信息反馈给ta,就能得到一个新的答案,这样不需要反复几次,你就能够得到准确的答案。
step4:输入已经获取的 plausible patch 及相关信息,获取更多 plausible patch:ChatGPT生成的所谓plausible patch(指的是能够通过已有测试用例,但不一定完备的patch。在这里,这个plausible本身的含义就很微妙,翻译为“貌似合理”,那么到底是合理还是不合理呢?),作者认为这种答案也很有用,你先拿着这个答案去鼓励一下ChatGPT(“你回答得很棒哦”)然后再让ta给出另一个答案(“能不能再想想还有没有其他的答案呢?”),这样它有可能就能给出一个完备的patch了
3 对方法的评估 Evaluation
作者对这套方法起名ChatRepair,然后用来和已有的一些系统对比,包括作者自己基于另一个大语言模型开发的修复工具CodexRepair
,以及当前大家认为能代表LLM-based代码修复的AlphaRepair。