国内刊号:11-2560/TP
国际刊号:1000-9825
发布日期:
作者:王尚文,刘逵,林博,黎立,Jacques KLEIN,Tegawendé François BISSYANDÉ,毛晓光
单位:王尚文,国防科技大学 计算机学院, 湖南 长沙 41007311,刘逵,南京航空航天大学 计算机科学与技术学院, 江苏 南京 21001602,林博,国防科技大学 计算机学院, 湖南 长沙 41007303,黎立,Monash University, Clayton VIC 3800, Australia04,Jacques KLEIN,University of Luxembourg, Luxembourg L-1359, Luxembourg05,Tegawendé François BISSYANDÉ,University of Luxembourg, Luxembourg L-1359, Luxembourg06,毛晓光,国防科技大学 计算机学院, 湖南 长沙 41007307
关键词:缺陷定位;缺陷自动修复;神经网络
基金:国家自然科学基金(62172214);江苏省自然科学基金(BK20210279)
软件缺陷定位是指找出与软件失效相关的程序元素. 当前的缺陷定位技术仅能产生函数级或语句级的定位结果. 这种粗粒度的定位结果会影响人工调试程序和软件缺陷自动修复的效率和效果. 专注于细粒度地识别导致软件缺陷的具体代码令牌, 为代码令牌建立抽象语法树路径, 提出基于指针神经网络的细粒度缺陷定位模型来预测出具体的缺陷代码令牌和修复该令牌的具体操作行为. 开源项目中的大量缺陷补丁数据集包含大量可供训练的数据, 且基于抽象语法树构建的路径可以有效捕获程序结构信息. 实验结果表明所训练出的模型能够准确预测缺陷代码令牌并显著优于基于统计的与基于机器学习的基线方法. 另外, 为了验证细粒度的缺陷定位结果可以贡献于缺陷自动修复, 基于细粒度的缺陷定位结果设计两种程序修复流程, 即代码补全工具去预测正确令牌的方法和启发式规则寻找合适代码修复元素的方法, 结果表明两种方法都能有效解决软件缺陷自动修复中的过拟合问题.
来源:2024年第4期
《软件学报》期刊编辑部