整合多种软件构件以提升 LLM 基于 Bug 定位与程序修复
人工智能
2024-12-06 v1 计算与语言
机器学习
摘要
LLM 在自动化程序修复 (APR) 方面备受关注。LLM 基于的方法要么提供正确代码,要么在给定有缺陷方法的情况下直接生成补丁。然而,大多数 LLM 基于的方法仅依赖单一类型的软件信息,未充分利用不同软件构件。尽管如此,许多 LLM 基于的方法并未探讨哪些特定类型的信息最有助于 APR。为此,我们提出了 DEVLoRe,利用问题内容 (描述和消息) 和堆栈错误轨迹来定位有缺陷的方法,然后依据有缺陷方法中的调试信息以及问题内容和堆栈错误轨迹,定位有缺陷行并生成可通过所有单元测试的合理补丁。结果表明,问题内容在帮助 LLM 进行故障定位和程序修复方面尤为有效,不同类型的软件构件彼此互补。通过整合不同构件,DEVLoRe 在 Defects4J v2.0 数据集上成功定位了 49.3% 和 47.6% 的单缺陷和非单缺陷方法,并生成了 56.0% 和 14.5% 的合理补丁。该方法优于当前最先进的 APR 方法。此外,我们重新实现并评估了该框架,在使用相同或更先进模型的其他最先进框架中解决了 9 个独特问题。我们还讨论了领先的 Python 代码框架是否可直接应用于 Java 代码或反之。本工作的源代码和实验结果已提供复现。
引用
@article{arxiv.2412.03904,
title = {MISR: Measuring Instrumental Self-Reasoning in Frontier Models},
author = {Kai Fronsdal and David Lindner},
journal= {arXiv preprint arXiv:2412.03904},
year = {2024}
}
备注
10 pages, 65 page appendix, 5 figures