软件缺陷在现代软件系统演化中不可避免,且危害巨大,而人工代码缺陷修复通常代价高昂且具有挑战性。自动程序修复技术旨在没有人工干预的情况下,自动化地修复程序中的已知代码缺陷。过去数十年间来自动程序修复技术取得了长足的进展,并且获得了来自学术界和工业界的广泛关注。但是现有的修复技术往往采用生成+验证修复范式,极大依赖测试用例来对生成补丁进行正确性验证。由于测试用例的不充分性,会产生通过现有测试用例但实际错误的补丁,即补丁过拟合问题。过拟合补丁往往耗费大量的人工验证时间,极大阻碍修复效果甚至降低开发者对修复工具的信赖程度,近几年成为了自动程序修复领域研究热点。
为了解决上述问题, iSE实验室博士生张犬俊创新地提出了一种基于大语言模型的补丁正确性验证技术APPT。APPT采用了基于大模型的特征提取模板、基于长短期记忆网络的融合模块和基于深度学习的分类器模块。区别于现有的基于学习的验证技术隔离特征提取和分类器训练,APPT对三个子模块进行协同整体训练以充分将大模型适配到补丁验证场景中。APPT作为一个通用过拟合补丁检测框架,具有极高的扩展性,可以应用到不同类型的大语言模型中。结果表明APPT仅使用自然语言模型即取得了最佳效果,同时代码模型可以进一步增强APPT过拟合补丁检测性能。
该工作首次展示了预训练+微调大语言模型进行补丁验证的广阔前景,对利用大语言模型增强程序修复技术能力具有重要科研和现实意义,值得后续研究人员的持续关注。相关研究成果形成了《APPT: Boosting Automated Patch Correctness Prediction via Fine-tuning Pre-trained Models》已被软件工程领域顶级国际期刊IEEE Transactions on Software Engineering(TSE, CCF-A类期刊)全文录用,南京大学为唯一单位。
张犬俊同学由陈振宇教授和房春荣助理研究员共同指导,其主要研究方向包括智能软件测试和自动程序修复。张犬俊的研究成果先后全文发表在 ISSTA、ICSE、ASE、ACL、TSE、TDSC、TOSEM 等 CCF A 类会议和期刊。张犬俊博士将并继续完善基于深度学习(尤其是当前的大语言模型)的程序修复技术研究,形成系统性的学术研究和工业应用,完成博士毕业论文计划。