当前位置: 首页 > 专利查询>北京大学专利>正文

软件自动修复方法、系统、电子设备及存储介质技术方案

技术编号:37171646 阅读:15 留言:0更新日期:2023-04-20 22:42
本发明专利技术实施例涉及计算机领域,公开了一种软件自动修复方法、系统、电子设备及存储介质。本发明专利技术中,软件自动修复方法包括:获取软件缺陷代码;根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板;填充补丁模板,生成软件缺陷代码的补丁;用补丁修复软件缺陷代码。本发明专利技术的软件自动修复方法,能够针对不同程序开发语言的缺陷代码生成适配性高的补丁,提高软件自动修复的修复能力。提高软件自动修复的修复能力。提高软件自动修复的修复能力。

【技术实现步骤摘要】
软件自动修复方法、系统、电子设备及存储介质


[0001]本申请实施例涉及计算机领域,特别涉及一种软件自动修复方法、系统、电子设备及存储介质。

技术介绍

[0002]软件自动修复(Automatic Bug Fixing,简称“ABF”),严格意义上来说是指在不需要人工介入的情况下,通过自动化生成正确的修复包来修复目标软件中存在的Bug的一种程序。
[0003]传统的软件自动修复技术主要从代码仓库中挖掘预存的补丁模板、根据缺陷代码进行贪心搜索以及随机搜索等技术,生成能够通过测试样例的软件补丁。由于预存的补丁模板有限,但程序开发语言多种多样,预存的补丁模板泛化能力有限,并不能完全适配所有缺陷代码,尤其在用于处理新的软件缺陷时,根据预存的补丁模板,难以得到适配的补丁,从而难以完成对缺陷代码的自动修复。

技术实现思路

[0004]本申请实施例的主要目的在于提出一种软件自动修复方法、系统、电子设备及存储介质,能够针对不同程序开发语言的缺陷代码生成适配性高的补丁,提高软件自动修复的修复能力。
[0005]为实现上述目的,本申请实施例提供了一种软件自动修复方法,包括:获取软件缺陷代码;根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板;填充补丁模板,生成软件缺陷代码的补丁;用补丁修复软件缺陷代码。
[0006]为实现上述目的,本申请实施例提供了一种软件自动修复系统,包括:获取模块,用于获取软件缺陷代码;模板生成模块,用于根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板;补丁生成模块,用于填充补丁模板,生成软件缺陷代码的补丁;修复模块,用于用补丁修复软件缺陷代码。
[0007]为实现上述目的,本申请实施例还提供了一种电子设备,包括:至少一个处理器;与至少一个处理器通信连接的存储器;存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述软件自动修复方法。
[0008]为实现上述目的,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述软件自动修复方法。
[0009]通过根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板,填充补丁模板,生成软件缺陷代码的补丁,可以使得生成的补丁与软件缺陷代码的语法相符,不论软件缺陷代码以何种语言编写,都可以生成适配的补丁进行修复,提高软件自动修复的修复能力。
附图说明
[0010]一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
[0011]图1是根据本专利技术一实施例提供的软件自动修复方法流程图;
[0012]图2是根据本专利技术一实施例提供的软件自动修复的扩展语法规则;
[0013]图3是根据本专利技术一实施例提供的补丁模板生成模型的示意图;
[0014]图4是根据本专利技术一实施例提供的提案器/决策器结构的示意图;
[0015]图5是根据本专利技术一实施例提供的软件自动修复方法实施示意图;
[0016]图6是根据本专利技术一实施例提供的软件自动修复系统示意图;
[0017]图7是根据本专利技术一实施例提供的电子设备结构示意图。
具体实施方式
[0018]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
[0019]本专利技术的实施例涉及一种软件自动修复方法,如图1所示,方法具体包括:
[0020]步骤101,获取软件缺陷代码;
[0021]步骤102,根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板;
[0022]步骤103,填充补丁模板,生成软件缺陷代码的补丁;
[0023]步骤104,用补丁修复软件缺陷代码。
[0024]本实施例的软件自动修复方法,应用于电子设备中,例如,电脑、手机、平板等,通过开发一个软件自动修复系统,实现软件的自动修复。本实施例的软件自动修复方法,通过根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板,填充补丁模板,生成软件缺陷代码的补丁,可以使得生成的补丁与软件缺陷代码的语法相符,不论软件缺陷代码以何种语言编写,都可以生成适配的补丁进行修复,提高软件自动修复的修复能力。
[0025]下面对本实施方式的软件自动修复方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
[0026]在步骤101中,电子设备获取软件缺陷代码,即故障源代码。
[0027]具体地,软件缺陷代码可以由电子设备根据代码测试结果获取,也可以由电子设备读取技术人员的输入内容获取。
[0028]在步骤102中,电子设备根据软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合软件缺陷代码所使用语言的语法的补丁模板。
[0029]具体地,电子设备可以基本深度学习技术,从获取的软件缺陷代码中,自学习软件
缺陷代码的语法,调用训练好的补丁模板生成模型,生成符合软件缺陷代码的语法的补丁模板。
[0030]在一个例子中,在步骤102之前,电子设备还基于缺陷定位技术,在软件缺陷代码中确定缺陷函数;解析缺陷函数,生成第一抽象语法树(Abstract Syntax Tree,简称“AST”);根据第一抽象语法树中每一节点的特征向量、标签及邻接矩阵,得到第一抽象语法树的前序遍历序列、各节点标签向量及第一抽象语法图;根据预设的语法规则和语法特征,得到扩展程序语法;根据扩展程序语法的规则序列,调用词嵌入方法,生成各规则序列嵌入向量和程序补丁;根据规则序列的编码序号,生成各规则序列编码向量;根据程序补丁,生成第二抽象语法树;根据第二抽象语法树,得到第二抽象语法图及第二抽象语法树路径。
[0031]补丁模板生成模型,包括:代码编码器、补丁编码器、抽象语法树路径编码器和扩展语法解码器。生成软件缺陷代码的补丁模板,具体包括:将前序遍历序列、各节点标签向量及第一抽象语法图输入代码编码器,得到代码编码结果;将代码编码结果和各规则序列嵌入向量、各规则序列编码向量、第二抽象语法图输入补丁编码器,得到补丁编码结果;将代码编码结果、代码编码结果和第二抽象语法树路径输入抽象语本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件自动修复方法,其特征在于,包括:获取软件缺陷代码;根据所述软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合所述软件缺陷代码所使用语言的语法的补丁模板;填充所述补丁模板,生成所述软件缺陷代码的补丁;用所述补丁修复所述软件缺陷代码。2.根据权利要求1所述的软件自动修复方法,其特征在于,在所述根据所述软件缺陷代码的语法特征和训练好的补丁模板生成模型,生成符合所述软件缺陷代码所使用语言的语法的补丁模板前,所述方法还包括:基于缺陷定位技术,在所述软件缺陷代码中确定缺陷函数;解析所述缺陷函数,生成第一抽象语法树;根据所述第一抽象语法树中每一节点的特征向量、标签及邻接矩阵,得到第一抽象语法树的前序遍历序列、各节点标签向量及第一抽象语法图;根据预设的语法规则和所述语法信息,得到扩展程序语法;根据所述扩展程序语法的规则序列,调用词嵌入方法,生成各规则序列嵌入向量和程序补丁;根据所述规则序列的编码序号,生成各规则序列编码向量;根据所述程序补丁,生成第二抽象语法树;根据所述第二抽象语法树,得到第二抽象语法图及第二抽象语法树路径;所述补丁模板生成模型,包括:代码编码器、补丁编码器、抽象语法树路径编码器和扩展语法解码器;所述生成符合所述软件缺陷代码所使用语言的语法的补丁模板,包括:将所述前序遍历序列、各所述节点标签向量及所述第一抽象语法图输入所述代码编码器,得到代码编码结果;将所述代码编码结果和各所述规则序列嵌入向量、各所述规则序列编码向量、所述第二抽象语法图输入所述补丁编码器,得到补丁编码结果;将所述代码编码结果、所述代码编码结果和所述第二抽象语法树路径输入所述抽象语法树路径编码器,得到抽象语法树路径编码结果;将所述抽象语法树路径编码结果输入所述扩展语法解码器,选取最佳规则序列;根据所述最佳规则序列,生成所述补丁模板。3.根据权利要求2所述的软件自动修复方法,其特征在于,所述代码编码器,包括:第一自注意力层、第一门控层和第一图卷积层;所述将所述前序遍历序列、各所述节点标签向量及所述第一抽象语法图输入所述代码编码器,得到代码编码结果,包括:根据所述前序遍历序列,获取各节点的位置特征向量;根据前序遍历序列与所述位置特征向量,获取第一问询向量、第一键值向量及第一权值向量;将所述第一问询向量、所述第一键值向量及所述第一权值向量输入所述第一自注意力层,得到第一自注意力结果;
将所述第一自注意力结果各所述节点标签向量输入所述第一门控层,得到第一门控结果;将所述第一门控结果与所述第一抽象语法图输入所述第一图卷积层,得到第一图卷积结果;将所述第一图卷积结果赋值给所述第一问询向量、所述第一键值向量及所述第一权值向量,对所述第一自注意力层、第一门控层和第一图卷积层进行迭代计算,得到所述代码编码结果。4.根据权利要求2所述的软件自动修复方法,其特征在于,所述补丁编码器,包括:第二自注意力层、第二门控层、自然语言注意力层和第二图卷积层;所述将所述代码编码结果和各所述规则序列嵌入向量、各所述规则序列编码向量、所述第二抽象语法图输入所述补丁编码器,得到补丁编码结果,包括:根据所述前序遍历序列,获取各节点的位置特征向量;根据所述规则序列嵌入向量与所述位置特征向量,获取第二问询向量、第二键值向量及第二权值向量;将所述第二问询向量、所述第二键值向量及所述第二权值向量输入所述第二自注意力层,得到第二自注意力结果;将所述第二自注意力结果和各所述规则序列编码向量输入所述第二...

【专利技术属性】
技术研发人员:程圣宇朱琪豪孙泽宇肖元安张文杰熊英飞张路曹继承彭星海
申请(专利权)人:北京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1