【技术实现步骤摘要】
一种基于受限集的程序语义缺陷自动修复方法
本专利技术属于程序语义缺陷修复方法
,更具体的说是涉及一种基于受限集的程序语义缺陷自动修复方法。
技术介绍
程序语义缺陷自动修复的过程包括缺陷特征定义,缺陷检测,语义缺陷自动修复。语义缺陷修复是指对缺陷检测出的语义缺陷进行自动修复以防止程序异常,保证系统的正常运行。越来越多的行业注重对于软件缺陷的检测,大型企业一般会单独设立软件测试工作组,进行缺陷检测,保证系统的正常运行,降低系统崩溃带来的各种损失。据统计,(缺陷检测以及程序语义缺陷的普遍性,)已开发的工程项目中,每一千行代码平均约产生5.1个缺陷。一般项目的代码会过万行,这样的千行缺陷率会导致系统缺少安全性。人工修复缺陷的不足。传统修复方式即人工修复,开发人员忙于算法和功能的实现,缺少专业的安全人员,不能及时发现漏洞,面对数量庞大的漏洞,安全人员疲于应对,没有时间顾及隐含的部分语义缺陷,使得系统运营维护阶段的程序缺陷修复,需要耗费大量的人力物力,修复成本高。每修复一个花费时间,修复成本高,而程序自动修复能够为 ...
【技术保护点】
1.一种基于受限集的程序语义缺陷自动修复方法,其特征在于,包括以下部分:/nA、预定义修复模板,针对缺陷特征给出统一的修复方法,由缺陷报告中的缺陷类型确定对应的预定义修复模板;/nB、对缺陷文件进行重建抽象语法树,广度优先遍历AST,找到缺陷语句对应的树结点,更新抽象语法树结点上的缺陷相关信息,获取缺陷操作;/nC、获得缺陷相关变量的受限集,进而得到补丁修复条件;/nD、遵循程序改动最小原则,利用使用-定义链确定修复位置。/n
【技术特征摘要】
1.一种基于受限集的程序语义缺陷自动修复方法,其特征在于,包括以下部分:
A、预定义修复模板,针对缺陷特征给出统一的修复方法,由缺陷报告中的缺陷类型确定对应的预定义修复模板;
B、对缺陷文件进行重建抽象语法树,广度优先遍历AST,找到缺陷语句对应的树结点,更新抽象语法树结点上的缺陷相关信息,获取缺陷操作;
C、获得缺陷相关变量的受限集,进而得到补丁修复条件;
D、遵循程序改动最小原则,利用使用-定义链确定修复位置。
2.根据权利要求1所述的一种基于受限集的程序语义缺陷自动修复方法,其特征在于,所述的部分A中,所述预定义修复模板,是通用的缺陷修复模板;程序语义缺陷有语法语义特征,将语义缺陷归纳为缺陷模式,基于缺陷静态检测方法,检测出软件中存在的缺陷,缺陷信息以缺陷报告形式输出,包括缺陷文件名、缺陷类型、缺陷所在行;由通用的缺陷修复模板,针对这些缺陷特征给出统一的修复方法。
3.根据权利要求1所述的一种基于受限集的程序语义缺陷自动修复方法,其特征在于,所述的部分B中,所述更新抽象语法树结点上的缺陷相关信息是指根据读到的缺陷信息对缺陷文件对应的抽象语法树节点上的信息,用于之后的补丁修复位置的确定;重建语法树之后,读取缺陷报告中的信息,将是否为缺陷、缺陷类型、缺陷相关变量三种信息在AST上标记更新结点上的信息,结点初始化默认为非缺陷、缺陷类型和缺陷相关变量为空;广度优先遍历AST,根据缺陷报告中的缺陷信息对AST进行更新。
...
【专利技术属性】
技术研发人员:董玉坤,张莉,庞善臣,刘浩,尹文静,
申请(专利权)人:中国石油大学华东,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。