【技术实现步骤摘要】
基于图神经网络的缺陷程序自动修复方法及处理装置
[0001]本申请涉及程序自动修复
,具体说是一种基于图神经网络的缺陷程序自动修复方法及处理装置。
技术介绍
[0002]程序缺陷在软件的开发过程中是不可避免的,特别是随着现代信息技术的迅速发展,软件规模在不断增加,程序缺陷的数量也在随之增加。程序缺陷破坏软件的正常执行,使得软件在某种程度上不能满足其既有的功能要求。严重的程序缺陷不仅会造成企业的重大经济损失,甚至会对人们的生命安全造成重大威胁。因此,及时修复程序中的缺陷十分重要,已经成为软件维护中的一项重要任务。
[0003]已经有研究使用基于搜索的自动程序修复方法来指导修复补丁的生成过程。其核心思想是代码具有重复性,希望复用程序中的代码片段来修复缺陷。具体而言,将程序中若干位置的更新(修改、删除、添加)视为个体,并把所有通过更新得到组合作为一个搜索空间,并在此搜索空间中寻求最优解。基于搜索的自动程序修复方法存在着如何设置合适的搜索空间、生成的补丁能够通过全部测试用例但可能违背程序语义等关键性问题。另一些研究提出 ...
【技术保护点】
【技术特征摘要】
1.基于图神经网络的缺陷程序自动修复方法,其特征在于,包括:步骤S1,获取缺陷程序;步骤S2,对所述缺陷程序进行抽象语法树解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储;步骤S3,选取训练数据集,对图神经网络模型进行训练,根据损失函数对所述图神经网络模型进行模型参数调整,获取最优图神经网络模型;步骤S4,将所述缺陷程序的图结构作为输入数据,经所述最优图神经网络模型嵌入后,将所述缺陷程序的图结构映射为固定维向量空间的表示,然后通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成;步骤S5,通过测试套件对所述程序补丁进行验证,当所述程序补丁通过测试套件的验证,则所述最优图神经网络模型输出所述缺陷程序的正确补丁,完成基于图神经网络的缺陷程序自动修复。2.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S1中的所述获取缺陷程序包括:将待修复程序输入到缺陷定位单元中,经过所述缺陷定位单元执行测试用例,通过测试用例覆盖信息对所述待修复程序进行可疑度计算,输出所述待修复程序中的可疑程序列表,其中所述可疑程序列表中包含的程序为缺陷程序。3.根据权利要求2的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S1中的经过所述缺陷定位单元对所述待修复程序的可疑度计算的可疑度计算公式为:其中,n
ef
(s)表示覆盖程序实体S的失败测试数据的数量,n
ep
(s)表示覆盖程序实体S的成功测试数据数量,n
f
表示测试套件中针对缺陷程序的所有失败测试数据数量。4.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S2中的对所述缺陷程序进行解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储,包括:将所述缺陷程序解析为抽象语法树形式,以捕获所述缺陷程序的语法语义结构,然后连接节点与边形成图结构以存储所述缺陷程序信息。5.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S3中的所述图神经网络模型的组成包括:一个门控图神经网络(GGNN)和一个长短期记忆网络(LSTM);其中门控图神经网络用于嵌入缺陷程序,长短期记忆网络用于生成程序补丁;此外,长短期记忆网络还可以通过增加、删除和替换图节点来实现复杂的程序结构转化,以处理广泛的程序缺陷类型。6.根据权利要求1的基于图神经网...
【专利技术属性】
技术研发人员:曹鹤玲,韩栋,楚永贺,廖天力,李磊,赵晨阳,刘广恩,王峰,王盼盼,王彬茏,
申请(专利权)人:河南工业大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。