[发明专利]一种基于受限集的程序语义缺陷自动修复方法有效
申请号: | 201910832302.8 | 申请日: | 2019-09-04 |
公开(公告)号: | CN110674031B | 公开(公告)日: | 2022-09-30 |
发明(设计)人: | 董玉坤;张莉;庞善臣;刘浩;尹文静 | 申请(专利权)人: | 中国石油大学(华东) |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/658 |
代理公司: | 北京慕达星云知识产权代理事务所(特殊普通合伙) 11465 | 代理人: | 曹鹏飞 |
地址: | 266000 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 受限 程序 语义 缺陷 自动 修复 方法 | ||
1.一种基于受限集的程序语义缺陷自动修复方法,其特征在于,包括以下部分:
A、预定义修复模板,针对缺陷特征给出统一的修复方法,由缺陷报告中的缺陷类型确定对应的预定义修复模板;
B、对缺陷文件进行重建抽象语法树,广度优先遍历AST,找到缺陷语句对应的树结点,更新抽象语法树结点上的缺陷相关信息,获取缺陷操作;
C、获得缺陷相关变量的受限集,进而得到补丁修复条件;
D、遵循程序改动最小原则,利用使用-定义链确定修复位置;
所述的部分D中,所述程序改动最小原则是指尽量少的对程序进行改动,实现对程序缺陷的修复;设定优先级,优先选择对程序改动最小的方案——对同一语句块的同种类型的缺陷进行分析;如果同一类缺陷出现在一个语句块中,且缺陷相关变量相同,没有进行新的赋值也未有对它产生影响的语句的,把语句块开始的位置确定为插入补丁语句的位置;除此之外,把缺陷点的前一位置作为插入位置;
所述的部分B中,所述更新抽象语法树结点上的缺陷相关信息是指根据读到的缺陷信息找到缺陷文件对应的抽象语法树结点上的信息,用于之后的补丁修复位置的确定;重建语法树之后,读取缺陷报告中的信息,将是否为缺陷、缺陷类型、缺陷相关变量三种信息在AST上标记更新结点上的信息,结点初始化默认为非缺陷、缺陷类型和缺陷相关变量为空;广度优先遍历AST,根据缺陷报告中的缺陷信息对AST进行更新;
所述的部分C中,所述受限集是指变量可能违反所在程序中合法取值范围的区间集合;
令变量区间域记为D,包括空集φ,连接符集合记作C={∧,∨},如果受限操作的两个操作数都可能违背取值范围,则用连接符∧;否则用连接符∨;由受限集定义受限规则为一个四元组R=e,domain1,c,domain2,其中domain1表示第一个操作表达式的受限区间域,e表示缺陷表达式,domain2表示第二个操作表达式受限区间域,c∈C;操作表达式分为操作符前表示式和操作符后表示式,若操作表达式n=a/b,操作符为算数除法,操作符前表示式为a,操作符后表示式为b,则除数b的受限集为[0,0]。
2.根据权利要求1所述的一种基于受限集的程序语义缺陷自动修复方法,其特征在于,所述的部分A中,所述预定义修复模板,是通用的缺陷修复模板;程序语义缺陷有语法语义特征,将语义缺陷归纳为缺陷模式,基于缺陷静态检测方法,检测出软件中存在的缺陷,缺陷信息以缺陷报告形式输出,包括缺陷文件名、缺陷类型、缺陷所在行;由通用的缺陷修复模板,针对这些缺陷特征给出统一的修复方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国石油大学(华东),未经中国石油大学(华东)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910832302.8/1.html,转载请声明来源钻瓜专利网。