[发明专利]程序漏洞修复方法、装置、电子设备及存储介质在审
申请号: | 202211169630.2 | 申请日: | 2022-09-23 |
公开(公告)号: | CN115481406A | 公开(公告)日: | 2022-12-16 |
发明(设计)人: | 闫保奇;姚倩;周慧英 | 申请(专利权)人: | 中国电信股份有限公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 北京律智知识产权代理有限公司 11438 | 代理人: | 孙宝海 |
地址: | 100033 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 漏洞 修复 方法 装置 电子设备 存储 介质 | ||
本申请提供一种程序漏洞修复方法、装置、电子设备及存储介质,该方法包括:基于对源代码进行缺陷检测所得到的源缺陷代码与检测结果,获取历史修复代码;其中,所述历史修复代码为与所述检测结果相对应的历史缺陷代码的修复代码;基于所述历史修复代码的特征,生成所述源缺陷代码的目标修复代码;根据所述源缺陷代码的源代码结构,在所述源代码中对所述目标修复代码进行序列拟合,得到修复后的源代码。本申请实施例的技术方案可自动完成程序漏洞修复。
技术领域
本申请属于计算机技术领域,具体而言,涉及一种程序漏洞修复方法、装置、电子设备及存储介质。
背景技术
在软件开发过程中,程序无法避免出现代码缺陷,而代码缺陷如若不及时修复,则会导致程序运行时出现错误的频率越来越快,甚至该代码缺陷存在的隐患将会影响到整个软件领域,发现并且修复程序中可能存在的漏洞,是当前软件工程学科中非常值得研究的方向。
自动修复编程错误,也称为程序修复,能更快的提高修复程序缺陷的效率,能推动软件开发的进程,而目前的程序修复过程仍以人工修复为主,程序自动修复效果较差,绝大多数情况下只提供给程序人员相关缺陷的修复建议,仍需要人工干预。
发明内容
为解决上述技术问题,本申请的实施例提供了一种程序漏洞修复方法及装置、电子设备、计算机可读存储介质。
根据本申请实施例的一个方面,提供了一种程序漏洞修复方法,包括:基于对源代码进行缺陷检测所得到的源缺陷代码与检测结果,获取历史修复代码;其中,所述历史修复代码为与所述检测结果相对应的历史缺陷代码的修复代码;基于所述历史修复代码的特征,生成所述源缺陷代码的目标修复代码;根据所述源缺陷代码的源代码结构,在所述源代码中对所述目标修复代码进行序列拟合,得到修复后的源代码。
在一实施例中,基于对源代码进行缺陷检测所得到的源缺陷代码与检测结果,获取历史修复代码,包括:
对所述源代码进行缺陷检测,得到检测结果以及检测结果所对应的源缺陷代码;
基于所述检测结果,获取与所述源缺陷代码相对应的历史缺陷代码以及所述历史缺陷代码的修复代码;
对所述历史缺陷代码与所述源缺陷代码进行相似度计算,得到各历史缺陷代码所对应的相似度;
将相似度大于预设相似度阈值的历史缺陷代码的修复代码,作为所述历史修复代码。
在一实施例中,所述基于所述历史修复代码的特征,生成所述源缺陷代码的目标修复代码,包括:
分别对所述源缺陷代码,以及所述历史修复代码进行抽象化处理,相应得到抽象源缺陷代码以及抽象历史修复代码;
基于所述抽象历史修复代码的特征,将所述抽象源缺陷代码翻译为抽象修复代码;
对所述抽象修复代码进行反抽象化处理,得到所述目标修复代码。
在一实施例中,所述分别对所述源缺陷代码,以及所述历史修复代码进行抽象化处理,相应得到抽象源缺陷代码以及抽象历史修复代码,包括:
根据所述源缺陷代码的检测结果,获取与所述源缺陷代码相关的源代码结构;
基于所述源代码结构对所述源缺陷代码的函数与参数,以及所述历史修复代码的函数与参数分别进行抽象化处理,得到所述抽象源缺陷代码以及所述抽象历史修复代码;其中,所述抽象源缺陷代码与所述抽象历史修复代码之间相对应的函数和相对应的参数,被抽象化为同一标识。
在一实施例中,所述基于所述抽象历史修复代码的特征,将所述抽象源缺陷代码翻译为抽象修复代码,包括:
对所述抽象源缺陷代码进行编码,得到多个词向量所组成的代码向量;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电信股份有限公司,未经中国电信股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211169630.2/2.html,转载请声明来源钻瓜专利网。