Invalidator:基于语义与语法推理的自动化补丁正确性评估
软件工程
2023-03-20 v2 机器学习
摘要
自动化程序修复(APR)面临测试过拟合的挑战,即生成的补丁通过验证测试却无法泛化。现有的补丁评估方法涉及生成新测试或人工检查,可能耗时或带有偏差。本文中我们提出一种新技术 INVALIDATOR,通过语义与语法推理自动评估 APR 生成补丁的正确性。INVALIDATOR 利用程序不变量推理程序语义,同时通过从大型代码语料库使用预训练语言模型学习的语言语义来捕获程序语法。给定缺陷程序与开发者修复程序,INVALIDATOR 在两者上推断可能的不变量。随后,INVALIDATOR 若满足以下情形则判定 APR 生成补丁过拟合:(1)其违反正确规约,或(2)维持原缺陷程序的错误行为。若我们的方法基于不变量未能判定过拟合补丁,INVALIDATOR 利用来自带标签补丁的已训练模型基于程序语法评估补丁正确性。INVALIDATOR 的益处有三。首先,INVALIDATOR 结合语义与语法推理增强其判别能力。其次,INVALIDATOR 无需生成新测试用例,仅依赖当前测试套件并使用不变量推断来泛化程序行为。第三,INVALIDATOR 完全自动化。实验结果表明 INVALIDATOR 在准确率和 F 度量上优于现有方法,正确识别 79% 的过拟合补丁,并比最佳基线多检测 23% 的过拟合补丁。
引用
@article{arxiv.2301.01113,
title = {Invalidator: Automated Patch Correctness Assessment via Semantic and Syntactic Reasoning},
author = {Thanh Le-Cong and Duc-Minh Luong and Xuan Bach D. Le and David Lo and Nhat-Hoa Tran and Bui Quang-Huy and Quyet-Thang Huynh},
journal= {arXiv preprint arXiv:2301.01113},
year = {2023}
}