【技术实现步骤摘要】
软件自动修复方法、系统、电子设备及存储介质
[0001]本申请实施例涉及计算机领域,特别涉及一种软件自动修复方法、系统、电子设备及存储介质。
技术介绍
[0002]软件自动修复(Automatic Bug Fixing,简称“ABF”),严格意义上来说是指在不需要人工介入的情况下,通过自动化生成正确的修复包来修复目标软件中存在的Bug的一种程序。
[0003]传统的软件自动修复技术主要从代码仓库中挖掘预存的补丁模板、根据缺陷代码进行贪心搜索以及随机搜索等技术,生成能够通过测试样例的软件补丁。由于预存的补丁模板有限,但程序开发语言多种多样,预存的补丁模板泛化能力有限,并不能完全适配所有缺陷代码,尤其在用于处理新的软件缺陷时,根据预存的补丁模板,难以得到适配的补丁,从而难以完成对缺陷代码的自动修复。
技术实现思路
[0004]本申请实施例的主要目的在于提出一种软件自动修复方法、系统、电子设备及存储介质,能够针对不同程序开发语言的缺陷代码生成适配性高的补丁,提高软件自动修复的修复能力。
[0005]为实现上述目的,本申请实施例提供了一种软件自动修复方法,包括:获取软件缺陷代码;根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板;填充补丁模板,生成软件缺陷代码的补丁;用补丁修复软件缺陷代码。
[0006]为实现上述目的,本申请实施例提供了一种软件自动修复系统,包括:获取模块,用于获取软件缺陷代码;模板生成模块,用于根据软件缺陷代码的语法 ...
【技术保护点】
【技术特征摘要】
1.一种软件自动修复方法,其特征在于,包括:获取软件缺陷代码;根据所述软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合所述软件缺陷代码所使用语言的语法的补丁模板;填充所述补丁模板,生成所述软件缺陷代码的补丁;用所述补丁修复所述软件缺陷代码。2.根据权利要求1所述的软件自动修复方法,其特征在于,在所述根据所述软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合所述软件缺陷代码所使用语言的语法的补丁模板前,所述方法还包括:基于缺陷定位技术,在所述软件缺陷代码中确定缺陷函数;解析所述缺陷函数,生成第一抽象语法树;根据所述第一抽象语法树中每一节点的特征向量、标签及邻接矩阵,得到第一抽象语法树的前序遍历序列、各节点标签向量及第一抽象语法图;根据预设的语法规则和所述语法信息,得到扩展程序语法;根据所述扩展程序语法的规则序列,调用词嵌入方法,生成各规则序列嵌入向量和程序补丁;根据所述规则序列的编码序号,生成各规则序列编码向量;根据所述程序补丁,生成第二抽象语法树;根据所述第二抽象语法树,得到第二抽象语法图及第二抽象语法树路径;所述补丁模板生成模型,包括:代码编码器、补丁编码器、抽象语法树路径编码器和扩展语法解码器;所述生成符合所述软件缺陷代码所使用语言的语法的补丁模板,包括:将所述前序遍历序列、各所述节点标签向量及所述第一抽象语法图输入所述代码编码器,得到代码编码结果;将所述代码编码结果和各所述规则序列嵌入向量、各所述规则序列编码向量、所述第二抽象语法图输入所述补丁编码器,得到补丁编码结果;将所述代码编码结果、所述代码编码结果和所述第二抽象语法树路径输入所述抽象语法树路径编码器,得到抽象语法树路径编码结果;将所述抽象语法树路径编码结果输入所述扩展语法解码器,选取最佳规则序列;根据所述最佳规则序列,生成所述补丁模板。3.根据权利要求2所述的软件自动修复方法,其特征在于,所述代码编码器,包括:第一自注意力层、第一门控层和第一图卷积层;所述将所述前序遍历序列、各所述节点标签向量及所述第一抽象语法图输入所述代码编码器,得到代码编码结果,包括:根据所述前序遍历序列,获取各节点的位置特征向量;根据前序遍历序列与所述位置特征向量,获取第一问询向量、第一键值向量及第一权值向量;将所述第一问询向量、所述第一键值向量及所述第一权值向量输入所述第一自注意力层,得到第一自注意力结果;
将所述第一自注意力结果各所述节点标签向量输入所述第一门控层,得到第一门控结果;将所述第一门控结果与所述第一抽象语法图输入所述第一图卷积层,得到第一图卷积结果;将所述第一图卷积结果赋值给所述第一问询向量、所述第一键值向量及所述第一权值向量,对所述第一自注意力层、第一门控层和第一图卷积层进行迭代计算,得到所述代码编码结果。4.根据权利要求2所述的软件自动修复方法,其特征在于,所述补丁编码器,包括:第二自注意力层、第二门控层、自然语言注意力层和第二图卷积层;所述将所述代码编码结果和各所述规则序列嵌入向量、各所述规则序列编码向量、所述第二抽象语法图输入所述补丁编码器,得到补丁编码结果,包括:根据所述前序遍历序列,获取各节点的位置特征向量;根据所述规则序列嵌入向量与所述位置特征向量,获取第二问询向量、第二键值向量及第二权值向量;将所述第二问询向量、所述第二键值向量及所述第二权值向量输入所述第二自注意力层,得到第二自注意力结果;将所述第二自注意力结果和各所述规则序列编码向量输入所述第二...
【专利技术属性】
技术研发人员:程圣宇,朱琪豪,孙泽宇,肖元安,张文杰,熊英飞,张路,曹继承,彭星海,
申请(专利权)人:北京大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。