
-
生物通官微
陪你抓住生命科技
跳动的脉搏
PReMM:基于大语言模型的程序修复方法,用于通过分而治之策略处理多种类型的程序错误
《Proceedings of the ACM on Programming Languages》:PReMM: LLM-Based Program Repair for Multi-method Bugs via Divide and Conquer
【字体: 大 中 小 】 时间:2025年11月07日 来源:Proceedings of the ACM on Programming Languages
编辑推荐:
大型语言模型(LLMs)在程序修复中的应用虽优于传统启发式、约束求解和机器学习方法,但主要针对单方法修复,难以处理跨多方法的复杂bug。本文提出PReMM技术,通过聚类故障方法、提取上下文信息、双智能体协同生成补丁三个核心组件,实现跨多方法修复。实验表明,PReMM在Defects4J数据集上成功修复307个bug,较ThinkRepair提升49.8%修复量。
在最近的研究中,大型语言模型(LLMs)被用来提升自动化程序修复技术的能力。虽然现有的基于LLM的程序修复技术在生成高质量补丁方面相比基于启发式方法、约束求解和学习的方法表现更优,但它们主要针对可以通过修改单个错误方法来修复的漏洞,这极大地限制了这些技术在修复需要跨多个方法进行修改的漏洞时的有效性。在这项工作中,我们提出了PReMM技术,该技术能够有效地生成需要修改多个方法的补丁。PReMM基于三个核心组件技术:错误方法聚类技术,根据方法之间的依赖关系将错误方法划分为不同的组,从而实现分而治之的修复策略;故障上下文提取技术,用于收集有关故障上下文的额外信息,以更好地指导故障诊断和正确补丁的生成;以及基于双代理的补丁生成技术,该技术利用两个具有不同角色的基于LLM的代理来更精确地分析故障并生成质量更高的补丁。我们已经将PReMM技术实现为一个同名工具,并将该工具应用于Defects4J V1.2和V2.0数据集中的实际漏洞修复任务。PReMM共修复了307个漏洞。与目前最先进的基于LLM的程序修复技术ThinkRepair相比,PReMM多修复了102个漏洞,修复准确率提高了49.8%。
生物通微信公众号
知名企业招聘