- 简介大型语言模型(LLMs)在各种软件工程任务中展现了惊人的有效性,包括自动程序修复(APR)。在本研究中,我们深入探讨了利用LLMs进行自动错误修复。与许多基于深度学习的APR方法不同,这些方法假定已知错误位置,依赖于行级定位工具,或者在一步中解决错误预测和修复,我们的方法独特地利用LLMs在标记级别上预测错误位置,随后利用它们进行错误修复。使用不同的LLMs对错误定位和修复进行方法论上的分离,可以有效地整合各种上下文信息并改善归纳偏差的融入。我们引入了Toggle:Token-Granulated Bug Localization and Repair,这是一个综合的程序修复框架,它集成了一个错误定位模型、一个调整单元和一个错误修复模型。Toggle以一个有错误的函数作为输入,并生成一个完整的修正函数。我们研究了各种提示错误修复模型的样式,以确定更好地利用归纳偏差的最有效提示,并明显优于其他提示。Toggle在CodeXGLUE代码精炼基准测试中取得了最新的最佳表现,并在其他几个广泛使用的APR数据集中表现出更好和可比的性能,包括Defects4J。
- 图表
- 解决问题本文旨在探讨利用大型语言模型进行自动程序修复的方法。与许多深度学习方法不同,该方法利用LLMs在标记级别上预测错误位置,然后利用不同的LLMs进行错误修复,从而实现错误定位和修复的方法学上的分离。
- 关键思路本文提出了Toggle框架,该框架包括错误定位模型、调整单元和错误修复模型,利用不同的提示样式来提高模型的效果。这种方法在CodeXGLUE代码细化基准测试中实现了最新的最先进性能,并在其他广泛使用的APR数据集中实现了更好和可比较的性能。
- 其它亮点本文的亮点包括使用LLMs在标记级别上进行错误定位和修复,提出Toggle框架,使用不同的提示样式来提高模型的效果,并在多个APR数据集上获得了最先进的性能。
- 最近的相关研究包括使用深度学习进行自动程序修复的方法,例如DeepFix和Prophet。


提问交流