当前位置: 首页 > 专利查询>暨南大学专利>正文

基于规则的自动程序修复方法、存储介质和计算设备技术

技术编号:24090579 阅读:26 留言:0更新日期:2020-05-09 07:53
本发明专利技术公开了一种基于规则的自动程序修复方法、存储介质和计算设备,方法包括首先采用基于规则的缺陷定位方法对被测的缺陷程序中的缺陷进行定位;然后根据缺陷的具体位置生成补丁候选者,不同的补丁候选者构成补丁候选者列表;接着针对于缺陷程序的缺陷,从补丁候选者列表选择出对应的补丁候选者并进行校验;校验完成之后,将补丁候选者与缺陷所在位置的上下文进行同步,以此完成自动程序修复。本发明专利技术可以精准定位到缺陷所在的位置,生成补丁自动修复软件中的缺陷,帮助开发人员减少修复缺陷的步骤。

Rule based automatic program repair methods, storage media and computing devices

【技术实现步骤摘要】
基于规则的自动程序修复方法、存储介质和计算设备
本专利技术涉及自动程序修复领域,特别涉及一种基于规则的自动程序修复方法、存储介质和计算设备。
技术介绍
由于需求不清晰、开发者技术不足和程序算法错误,程序中存在已知或未知的缺陷,影响软件质量。目前工业界主要通过人力对程序进行维护,从而减少缺陷。然而通过人力进行维护需要大量的劳动力和时间,因此就需要自动程序修复方法帮助开发者快速修复程序中的缺陷。当前主流的自动程序修复方法主要分为两类:一类是基于测试集,另一类是基于非测试集。目前大部分自动程序修复方法可归为基于测试集。一般来说,基于测试集的自动程序修复方法需要包含能够检测出缺陷的测试用例集,当所有的测试用例均能执行通过,则认为缺陷修复成功。基于非测试集的自动程序修复方法借助契约或者缺陷报告等信息对补丁进行评估,以保证修复的正确性。程序通常遵循许多隐式编程规则,当这些隐式编程规则被违反时,程序很容易产生缺陷。例如,PR-Miner[Li,Zhenmin,andYuanyuanZhou."PR-Miner:automaticallyextract本文档来自技高网...

【技术保护点】
1.一种基于规则的自动程序修复方法,其特征在于,步骤如下:/nS1、针对于被测的缺陷程序,采用基于规则的缺陷定位方法对缺陷程序中的缺陷进行定位;/nS2、根据缺陷的具体位置生成补丁候选者,不同的补丁候选者构成补丁候选者列表;/nS3、针对于缺陷程序的缺陷,从补丁候选者列表选择出对应的补丁候选者并进行校验;/nS4、校验完成之后,将补丁候选者与缺陷所在位置的上下文进行同步,以此完成自动程序修复。/n

【技术特征摘要】
1.一种基于规则的自动程序修复方法,其特征在于,步骤如下:
S1、针对于被测的缺陷程序,采用基于规则的缺陷定位方法对缺陷程序中的缺陷进行定位;
S2、根据缺陷的具体位置生成补丁候选者,不同的补丁候选者构成补丁候选者列表;
S3、针对于缺陷程序的缺陷,从补丁候选者列表选择出对应的补丁候选者并进行校验;
S4、校验完成之后,将补丁候选者与缺陷所在位置的上下文进行同步,以此完成自动程序修复。


2.根据权利要求1所述的基于规则的自动程序修复方法,其特征在于,在步骤S1中,采用基于规则的缺陷定位方法对缺陷程序中的缺陷进行定位,过程包括:
(1)根据项目集数据库挖掘出隐式编程规则,从而生成规则集;
(2)生成规则集之后,对规则集中的子项目集做进一步处理,得到对应关系集合M;
(3)根据对应关系集合M对缺陷程序中的缺陷进行定位,得到缺陷在缺陷程序中的具体位置。


3.根据权利要求2所述的基于规则的自动程序修复方法,其特征在于,采用频繁项集挖掘方法和规则推衍算法挖掘出隐式编程规则,从而生成规则集,过程如下:
(11)从项目集数据库中寻找出出现频率大于指定阈值的高频率项目集,并从高频率项目集中挖掘出频繁父项目集或者封闭的子项目集作为频繁项集,封闭是指子项目集出现频率大于父项目集的出现频率;
(12)对于出现频率不大于指定阈值的各个低频率项目集,在将其与频繁父项目集进行对比之前,将两者进行优化:
对频繁父项目集和低频率项目集中的无用函数参数或返回值进行裁剪,无用函数参数或返回值是指在后续项目中并无使用;
对裁剪后的频繁父项目集和低频率项目集中的函数参数和返回值类型进行替换,其中,函数类型统一替换为function,对象和结构体类型统一替换为object、基本数据类型统一替换为base、指针和引用类型统一替换为ptr;
(13)优化完成之后,将低频率项目集与频繁父项目集进行规则相似度对比:
r1∈S:M(r1,r2);
其中,r1为低频率项目集;r2为频繁父项目集;S为规则集;M(r1,r2)为对比结果,具体是true或false;规则相似度是指r1和r2之间的语法相近程度;
若r1和r2两者的长度不一致,则匹配失败,返回false;
若两者的结构层次和所有的结点类型相同,则匹配成功,说明低频率项目集属于隐式编程规则,返回true,然后基于频繁父项目集对该低频率项目集进行推衍并加入到规则集中;否则返回false。


4.根据权利要求2所述的基于规则的自动程序修复方法,其特征在于,对规则集中的子项目集做进一步处理,得到对应关系集合M,过程如下:
(21)从规则集S中取出一条规则项目集Yi,其中Yi∈S,计算得到该项目集的所有封闭子项目集{X1,X2,…,Xk};
(22)计算每个子项目集Xj与项目集Yi的置信度C(Xj,Y...

【专利技术属性】
技术研发人员:翁健黄昱铭刘志全田美金汪佳维
申请(专利权)人:暨南大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1