[发明专利]一种基于程序切片的缺陷自动修复的修复位置确定方法在审
申请号: | 201911418815.0 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111506493A | 公开(公告)日: | 2020-08-07 |
发明(设计)人: | 庞善臣;张莉;董玉坤;尹文静;王淑玉 | 申请(专利权)人: | 中国石油大学(华东) |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/07 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 266580 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 程序 切片 缺陷 自动 修复 位置 确定 方法 | ||
1.一种基于程序切片的缺陷自动修复的修复位置确定方法,包括以下部分:
A、确定缺陷点的位置,即缺陷定位,将该缺陷点的位置初始化为缺陷的修复开始位置,并把该缺陷点作为程序切片的兴趣点N。
B、重建缺陷程序的抽象语法树,收集缺陷点的缺陷相关变量v1和被赋值变量v2,初始化为变量集V。广度优先遍历抽象语法树,搜索使用v1和v2的程序语句,放入集合V中。
C、按照切片准则C=(N,V)进行程序方法级切片。
D、记录切片程序结束点的位置,作为修复结束位置。
2.根据权利要求1所述的一种基于程序切片的缺陷自动修复的修复位置确定方法,其特征在于,所述的部分A中,所述的缺陷定位是借助静态分析检测工具DTSJava对Java工程进行缺陷检测,获得的缺陷报告中显示具体的缺陷所在位置。静态分析,是指在不执行程序的情况下对程序进行分析。实质上是模拟执行程序,收集程序的状态信息和变量信息。
通过静态分析进行缺陷定位,缺陷位置准确且消耗时间少。
3.根据权利要求1所述的一种基于程序切片的缺陷自动修复的修复位置确定方法,其特征在于,所述的部分B中,所述的更新抽象语法树结点上的缺陷相关信息是指根据读到的缺陷信息对缺陷文件对应的抽象语法树节点上的信息,用于之后的补丁修复结束位置的确定。重建语法树之后,读取缺陷报告中的信息,将是否为缺陷、缺陷类型、缺陷相关变量三种信息在AST上标记更新结点(ASTNode)上的信息,结点初始化默认为非缺陷、缺陷类型和缺陷相关变量为空。广度优先遍历AST,根据缺陷报告中的缺陷信息对AST进行更新。
4.根据权利要求1所述的一种基于程序切片的缺陷自动修复的修复位置确定方法,其特征在于,所述的部分C中,所述的程序方法级切片是指针对报告出缺陷的程序中的方法进行切片。本发明进行的修复方法中,补丁语句是指条件语句,在缺陷点添加语句判断,进行限制。不合法的输入则不会执行缺陷点的语句,避免触发程序语义缺陷。修复开始位置确定为缺陷点的位置,只需对其所在方法进行分析,即可得出该缺陷的更合理的修复结束位置。
5.根据权利要求1所述的基于程序切片的缺陷自动修复的修复位置确定方法,其特征在于,所述的部分D中,所述的修复结束位置是指添加的补丁语句即条件语句的结束位置。因为添加条件语句后,可能会改变程序方法中某些变量的作用域。严重的会导致接下来的程序语句中出现程序未定义使用缺陷,带来潜在的安全隐患。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国石油大学(华东),未经中国石油大学(华东)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911418815.0/1.html,转载请声明来源钻瓜专利网。