[发明专利]一种基于自适应搜索的程序自动修复方法在审
申请号: | 202110447621.4 | 申请日: | 2021-04-25 |
公开(公告)号: | CN113282485A | 公开(公告)日: | 2021-08-20 |
发明(设计)人: | 郭荣勋;姚远;徐锋;吕建 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/07 |
代理公司: | 南京乐羽知行专利代理事务所(普通合伙) 32326 | 代理人: | 李玉平 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 自适应 搜索 程序 自动 修复 方法 | ||
1.一种基于自适应搜索的程序自动修复方法,其特征在于,通过补丁的疏密程度,推测出当前搜索空间是否过小或者过大,并且通过分析得到影响搜索空间大小的因素,根据这些因素设定了一系列策略,自适应调整搜索空间的大小,在搜索空间中随机生成补丁,最终给出缺陷程序的修复结果;具体包括以下两个部分:
(1)通过补丁生成缓存记录修复过程中生成过的补丁,通过设定数量补丁的窗口内缓存命中数来获取补丁疏密程度;
(2)通过影响搜索空间的各因素设定策略,在修复过程中以自适应方式调整动态搜索空间大小。
2.根据权利要求1所述的基于自适应搜索的程序自动修复方法,其特征在于,影响搜索空间大小的因素包括缺陷语句、修改算子、可重用代码元素和最多修改位置。
3.根据权利要求1所述的基于自适应搜索的程序自动修复方法,其特征在于,首先,输入缺陷程序和测试用例集,经过预处理阶段得到缺陷语句集合、修改算子集合以及可重用代码元素集合;在补丁生成阶段,根据上面得到的这些集合共同构成补丁搜索空间,在搜索空间中随机搜索生成候选补丁,通过补丁生成缓存的命中次数来表示当前搜索空间的疏密程度,据此来调整搜索空间的大小;最后通过补丁验证阶段来验证候选补丁的正确性。
4.根据权利要求1所述的基于自适应搜索的程序自动修复方法,其特征在于,所述通过补丁生成缓存记录修复过程中生成过的补丁,通过设定数量补丁的窗口内缓存命中数来获取补丁疏密程度的部分中:
缺陷程序P以及配套的测试用例集T作为输入,通过测试的正确补丁R为输出;修复过程中会对缺陷程序P进行随机修改得到候选补丁Pd,修改动作d表示为三元组(f,o,u)的形式,f为修改的语句位置,o为采用的修改算子,u为选择的可重用代码元素;修复过程中连续生成的设定数量补丁组成一个补丁生成窗口Pd1,Pd2,Pd3…PdL,L为窗口长度,即窗口内的补丁数量;维护一个补丁生成缓存,每个候选补丁Pd在生成时都会去判断是否已经存在于缓存中;如果存在那么说明之前已经生成同样的补丁,该补丁对应的缓存命中次数hcp自增并且舍弃该补丁,重新生成新的补丁;如果不存在则将该补丁个体添加到补丁缓存;补丁窗口内缓存命中数hcw为窗口内所有补丁缓存命中数之和,通过下面的公式来进行更新:
hcw=hcw+hcpn-hcpo
其中,hcpn表示最新生成的补丁对应的缓存命中数,hcpo表示窗口中最早生成的补丁对应的缓存命中数。
5.根据权利要求3所述的基于自适应搜索的程序自动修复方法,其特征在于,根据补丁生成窗口内缓存命中次数hcw来判断当前是否需要调整搜索空间的大小;若hcw大于上限阈值ΦH,则扩大搜索空间;若hcw小于下限阈值ΦL,则缩小搜索空间;不同规模的搜索空间对应的缓存命中阈值也不同,缓存命中阈值和实际搜索空间大小呈正相关关系;按照如下公式计算缓存命中阈值:
其中NF表示缺陷语句集合F的基数,NO表示修改算子集合O的基数,NU表示可重用代码元素集合U的基数,α表示更新系数,范围取(0,1]。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110447621.4/1.html,转载请声明来源钻瓜专利网。