A Deep Dive into Large Language Models for Automated Bug Localization and Repair

2024年04月17日
  • 简介
    大型语言模型(LLMs)在各种软件工程任务中已经展示了出色的效果,包括自动化程序修复(APR)。在本研究中,我们深入探讨了利用LLMs进行自动错误修复。与许多基于深度学习的APR方法不同,这些方法假定已知错误位置,依赖于行级定位工具,或者在一步中解决错误预测和修复的问题。我们的方法独特之处在于利用LLMs在标记级别上预测错误位置,然后将其用于错误修复。使用不同的LLMs分别进行错误定位和修复的方法学分离,可以有效整合各种上下文信息和改进归纳偏差的融合。我们引入了Toggle:标记粒度的错误定位和修复,这是一个综合的程序修复框架,包括错误定位模型、调整单元和错误修复模型。Toggle将有错误的函数作为输入,并生成完整的修正函数。我们研究了各种提示方式,以确定最有效的提示方式,更好地利用归纳偏差并显著优于其他提示方式。Toggle在CodeXGLUE代码精炼基准测试中实现了新的最先进(SOTA)性能,并在几个其他广泛使用的APR数据集中表现出更好和可比的性能,包括Defects4J。
  • 作者讲解
  • 图表
  • 解决问题
    本论文旨在探讨利用大型语言模型(LLMs)进行自动程序修复(APR)的问题,特别是在仅给出有缺陷代码而无缺陷位置的情况下。同时,该论文试图通过分离缺陷定位和修复的方法,利用不同的LLMs来提高上下文信息的有效整合和归纳偏差的改进。
  • 关键思路
    论文采用了一种新的方法,即利用LLMs在token级别预测缺陷位置,并随后用于缺陷修复。同时,该论文还提出了Toggle框架,该框架集成了缺陷定位模型、调整单元和缺陷修复模型,以生成完整的修复代码。
  • 其它亮点
    该论文使用了多种提示样式来优化缺陷修复模型,最终选择了最有效的提示样式,大幅提高了修复效果。同时,该论文在CodeXGLUE代码优化基准测试中取得了新的最高性能,并在其他广泛使用的APR数据集中展现出更好或相当的性能。此外,该论文还提供了开源代码。
  • 相关研究
    近期在这个领域中,还有一些相关的研究被进行。例如,Automated Program Repair Using Machine Learning: A Systematic Literature Review和Deep Learning for Automated Program Repair: A New Taxonomy and Challenge Dataset等。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问