点击蓝字
关注我们
AI TIME欢迎每一位AI爱好者的加入!
点击 阅读原文 观看作者讲解回放!
作者
戴振龙:浙江大学博士生
1. 研究背景与问题描述
自动化程序修复(Automated Program Repair, APR)是一个自动生成补丁以修复有缺陷代码的任务。然而,大多数研究集中于生成正确的修复补丁,却忽视了修复后的代码与原始有缺陷代码之间的一致性问题。如何进行自适应的错误修复,并在最小修改的基础上生成补丁,鲜有研究探讨。为了弥补这一空白,我们首先提出了一项新的任务:自适应程序修复(Adaptive Program Repair,AdaPR)。
随后,我们提出了一种两阶段的方法 AdaPatcher,旨在增强程序修复的同时保持一致性。在第一阶段,我们利用带有自我调试学习的错误定位器精确定位错误位置;在第二阶段,我们训练一个程序修改器,确保修复后的代码与原始有缺陷代码之间的一致性。程序修改器通过位置感知修复学习策略进行增强,采用选择性引用的混合训练策略和自适应优先学习来优先考虑较少的修改,基于已识别的错误代码的位置生成补丁。
实验结果表明,我们的方法在多个基准测试中表现优异,远超其他方法,验证了我们提出的两阶段框架在新任务 AdaPR 中的有效性。
模型架构图
主要贡献
(1)我们首先提出了一个新的任务AdaPR,以最小的修改来修复代码。该新任务旨在产生正确和一致的代码补丁,这在现实世界的软件开发中更实用;
(2)我们构建了一个50K数据规模的数据集,这是该任务的第一个大型数据集;
(3)我们提出了一个新的模型AdaPatcher,基于大语言模型并引入了定制化的改进,以有效地处理“where to fix”以及“how to fix”的挑战。
实验结果
实验结果图
实验结果显示了我们的模型在基线上的有效性,显示了它在减少修改的同时增强自动程序修复的潜力。本文提出的方法在格式、结构、逻辑等方面较好地保持了修复前后的代码一致性,以较小的改动幅度精准修复了代码中的错误。
生成结果示例图
研究展望与应用前景
在应用前景方面,自适应程序修复有着广泛的实际应用价值。这种自适应的修复方式不仅关注修复的准确性,还能够最大限度地减少对代码的变动,使得修复更加贴合实际需求。它不仅可以大幅提升软件开发过程中的错误修复效率,减少人工调试时间,还可以在大规模软件项目的维护中发挥重要作用,提高软件质量。随着技术的不断发展,APR有望成为软件开发和运维过程中不可或缺的工具,推动软件工程的自动化与智能化发展,希望我们的研究能为本课题的研究奠定基础。
往期精彩文章推荐
聚焦KDD'25:共话顶会论文写作、参会签证攻略等
关于AI TIME
AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。
迄今为止,AI TIME已经邀请了2000多位海内外讲者,举办了逾700场活动,超800万人次观看。
我知道你
在看
提出观点,表达想法,欢迎
留言
点击 阅读原文 观看作者讲解回放!