整合多种软件工件以提升基于大语言模型的错误定位和程序修复效果

《ACM Transactions on Software Engineering and Methodology》:Integrating Various Software Artifacts for Better LLM-based Bug Localization and Program Repair

【字体: 时间:2025年11月08日 来源:ACM Transactions on Software Engineering and Methodology

编辑推荐:

  LLMs在自动程序修复中需整合多种软件信息源(问题描述、错误堆栈、调试信息),当前方法多依赖单一数据。 DEVLoRe框架分两阶段:先通过问题内容和错误堆栈定位方法,再结合调试信息和多源数据定位行并生成补丁,在DEFECTS4J v2.0和SWE-bench Lite上分别实现49.3%和47.6%的定位率,56.0%和14.5%的补丁生成率,优于现有方法。源码见GitHub链接。

  

摘要

大型语言模型(LLMs)因其在自动化程序修复(APR)方面的潜力而受到了广泛关注。基于LLM的方法可以通过填充式技术插入正确的代码,或者在提供有缺陷的方法时直接生成补丁,目标是生成能够通过所有测试的合理补丁。然而,大多数基于LLM的APR方法仅依赖一种类型的软件信息,例如问题描述或错误堆栈跟踪,而没有充分利用多种软件工件的组合。相比之下,人类开发者通常会使用多种信息(如调试数据、问题讨论和错误堆栈跟踪)来诊断和修复错误。尽管如此,许多基于LLM的方法并未探索哪种特定类型的软件信息最有助于定位和修复软件错误。解决这一差距对于推进基于LLM的APR技术至关重要。
为了研究这一问题并模仿人类开发者修复错误的方式,我们提出了DEVLoRe(即DEVeloper Localization and Repair的缩写)。在这个框架中,LLM首先使用问题内容(描述和讨论)和错误堆栈跟踪来定位有缺陷的方法,然后依靠有缺陷方法中的调试信息以及问题内容和错误堆栈跟踪来定位有缺陷的代码行并生成有效的补丁。我们评估了问题内容、错误堆栈跟踪和调试信息在错误定位和自动程序修复中的有效性。结果表明,虽然问题内容和错误堆栈跟踪在帮助LLM进行故障定位和程序修复方面特别有效,但不同类型的软件工件在解决各种错误时可以相互补充。通过结合这三种类型的工件,并使用Defects4J v2.0数据集进行评估,DEVLoRe成功定位了49.3%的单方法错误并生成了56.0%的合理补丁。此外,DEVLoRe还能定位47.6%的非单方法错误并生成14.5%的合理补丁。而且,我们的框架简化了从有缺陷的源代码到完整修复的端到端过程,实现了39.7%的单方法错误修复率和17.1%的非单方法错误修复率,优于当前最先进的APR方法。此外,我们重新实现了并评估了我们的框架,证明了其在使用相同或更高级模型解决SWE-bench Lite上的9个独特问题方面的有效性。我们还讨论了是否可以将用于Python代码的领先框架直接应用于Java代码,反之亦然。本工作的源代码和实验结果可供复制,网址为https://github.com/XYZboom/DEVLoRe
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号