[发明专利]一种基于程序切片的缺陷自动修复的修复位置确定方法在审
申请号: | 201911418815.0 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111506493A | 公开(公告)日: | 2020-08-07 |
发明(设计)人: | 庞善臣;张莉;董玉坤;尹文静;王淑玉 | 申请(专利权)人: | 中国石油大学(华东) |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/07 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 266580 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 程序 切片 缺陷 自动 修复 位置 确定 方法 | ||
本发明提供了一种基于程序切片的缺陷自动修复的修复位置确定方法。首先,确定缺陷点的位置,即缺陷定位,将该缺陷点的位置初始化为缺陷的修复开始位置,并把该缺陷点作为程序切片的兴趣点N。之后,进行缺陷程序的抽象语法树的重建,收集缺陷点的缺陷相关变量v1和被赋值变量v2,初始化为变量集V。然后,广度优先遍历抽象语法树,搜索使用v1和v2的程序语句,放入集合V中。按照切片准则C=(N,V)进行程序方法级切片。最后,记录切片程序结束点的位置,作为修复结束位置。本发明提供的技术方案可以有针对性的对程序语义缺陷进行修复位置的精确定位,并且具有修复质量高,确保不二次引入其他缺陷的优点。
技术领域
本发明涉及一种缺陷自动修复的修复位置确定方法,特别涉及一种基于程序切片的缺陷自动修复的修复位置确定方法。
背景技术
随着现代程序规模和复杂度的不断上升,程序缺陷不可避免地存在且数量逐年上升。程序规模增大,缺陷密度大等问题,使得人工修复缺陷程序尤为费时费力。程序自动修复研究虽然处于起步阶段,但引起学术界和工业界的广泛关注和研究。北京大学、武汉大学等各大名校和谷歌、华为等知名企业,都在进行程序自动化修复的研究,力求可以提高软件开发效率,提升软件质量,降低软件修复成本。
现存的程序自动修复方法的定位方法的不足:错误定位的是错误触发点的位置,修复方法会将该位置作为修复位置,但是触发错误的位置不一定是修复位置或者最佳的修复位置,这样会生成大量的可信但是不正确的补丁,增加了筛选开销,降低了修复质量。现有的缺陷自动修复方法对于补丁位置的精确定位研究较少。但是,补丁修复位置的不精确定位容易造成局部修复、二次引入缺陷等问题,严重阻碍了程序自动修复技术的发展。因此,研究更为精确的补丁修复位置确定方法是必要的。
现有的程序自动修复方法的定位方法的缺点:基于测试集的定位方法,依赖测试集,仅实现部分功能性修复,修复具有盲目性,修复位置定位不精确,可能二次引入缺陷,影响修复效果。
发明内容
为了解决现有的修复方法的定位方法的缺点,本发明提出了一种基于程序切片的程序语义缺陷自动修复方法。本发明基于程序切片对缺陷相关变量影响的变量区域进行分析,确定精确的修复开始位置和修复结束位置。
本发明所采用的的技术方案如下:
一种基于程序切片的缺陷自动修复的修复位置确定方法,包括以下部分:
A、确定缺陷点的位置,即缺陷定位,将该缺陷点的位置初始化为缺陷的修复开始位置,并把该缺陷点作为程序切片的兴趣点N。
B、重建缺陷程序的抽象语法树,收集缺陷点的缺陷相关变量v1和被赋值变量v2,初始化为变量集V。广度优先遍历抽象语法树,搜索使用v1和v2的程序语句,放入集合V中。
C、按照切片准则C=(N,V)进行程序方法级切片。
D、记录切片程序结束点的位置,作为修复结束位置。
部分A中,所述的缺陷定位,是借助静态分析检测工具DTSJava对Java工程进行缺陷检测,获得的缺陷报告中显示具体的缺陷所在位置。静态分析,是指在不执行程序的情况下对程序进行分析。实质上是模拟执行程序,收集程序的状态信息和变量信息。通过静态分析进行缺陷定位,缺陷位置准确且消耗时间少。
部分B中,所述的更新抽象语法树结点上的缺陷相关信息是指根据读到的缺陷信息对缺陷文件对应的抽象语法树节点上的信息,用于之后的补丁修复结束位置的确定。重建语法树之后,读取缺陷报告中的信息,将是否为缺陷、缺陷类型、缺陷相关变量三种信息在AST上标记更新结点(ASTNode)上的信息,结点初始化默认为非缺陷、缺陷类型和缺陷相关变量为空。广度优先遍历AST,根据缺陷报告中的缺陷信息对AST进行更新。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国石油大学(华东),未经中国石油大学(华东)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911418815.0/2.html,转载请声明来源钻瓜专利网。