论文
SiblingRepair:使用 大语言模型 进行基于兄弟的 Multi-Hunk 修复
SiblingRepair: Sibling-Based Multi-Hunk Repair with Large Language Models
摘要
开发人员经常在实现相关功能的代码位置上犯类似的错误。这些位置称为同级位置,具有类似的问题并需要类似的修复。准确识别同级并持续修复它们对于自动化程序修复至关重要。 Hercules 是一种专为兄弟姐妹修复而设计的 SOTA 技术。然而,它受到对同级位置和提交历史可用性的强烈假设、严格的基于 AST 的同级匹配以及不灵活的基于模板的补丁生成的限制。为了解决这些限制,我们提出了 SiblingRepair,这是一种新的基于 LLM 的多块 APR 技术,专门用于同级修复。从基于频谱的故障定位识别的可疑位置开始,SiblingRepair 使用基于词元和嵌入的代码匹配来搜索语义相关的同级候选者,而不将发现限制于失败测试覆盖范围或提交历史记录。然后,它使用 LLM 来识别与故障相关的同级,并通过两种互补策略生成一致的补丁:同时修复(联合修复同级)和迭代修复(逐步分析补丁构建的候选者)。 SiblingRepair 进一步保留从早期可疑位置生成的有希望的补丁,并将它们组合成通用的多块补丁。我们根据 Defects4J 和 GHRB 基准评估 SiblingRepair。结果表明,SiblingRepair 的性能明显优于包括 Hercules 在内的 SOTA 多块修复技术。我们的评估进一步证明了其修复效率、其兄弟检测和修复组件的有效性以及 LLM 数据泄漏对结果的有限影响。总体而言,SiblingRepair 推进了自动化同级和通用多块修复。