[发明专利]一种基于自适应搜索的程序自动修复方法在审
申请号: | 202110447621.4 | 申请日: | 2021-04-25 |
公开(公告)号: | CN113282485A | 公开(公告)日: | 2021-08-20 |
发明(设计)人: | 郭荣勋;姚远;徐锋;吕建 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/07 |
代理公司: | 南京乐羽知行专利代理事务所(普通合伙) 32326 | 代理人: | 李玉平 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 自适应 搜索 程序 自动 修复 方法 | ||
本发明公开了一种基于自适应搜索的程序自动修复方法。本方法可以自动对原始缺陷程序进行修改,使得其能够通过给定的测试用例集。本方法通过补丁的疏密程度,推测出当前搜索空间是否过小或者过大,并且通过分析得到影响搜索空间大小的因素,包括缺陷语句、修改算子、可重用代码元素和最多修改位置,根据这些因素设定了一系列策略,自适应调整搜索空间的大小,并且通过补丁验证,最终给出缺陷程序的修复结果。在开源缺陷数据集Defects4J上的实验表明,基于自适应搜索的程序自动修复方法较传统的基于固定搜索空间的程序自动修复方法有更好的修复效果。
技术领域
本发明涉及一种基于自适应搜索的程序自动修复方法,可在程序修复过程中自适应调整搜索空间大小,以实现更好的修复效果。属于软件调试技术领域。
背景技术
软件故障调试是一个痛苦、耗时且昂贵的过程。调试过程要求软件开发人员来分析和理解程序失败的执行过程,找到故障的根本原因,然后实现修复方案,直到验证修复后的软件能够正确运行而不引入新的缺陷。软件调试过程耗费了大量人力成本,软件产品总体开发成本的一半左右都耗费在软件故障调试过程之中。如果软件程序能够自动修复,无疑将大大减少开发人员的维护成本和时间,更快地提高软件质量。
为了减少开发人员的工作量,近年来,程序自动修复技术作为一种有效修复和维护软件的解决方案被广泛研究,并取得显著的研究成果。其中,研究最广泛的是一类基于搜索的程序自动修复方法,这类方法通常采用随机或者启发式的搜索算法来探索可能的修复空间。在此类方法中,最关键的两个阶段是补丁生成和补丁验证,首先会通过修改源程序生成许多补丁,然后尝试验证每个补丁,生成验证的过程不断循环进行,直到满足某些停止条件为止。基于搜索的程序自动修复方法把修复看作是一个搜索问题,即在算法规定的补丁修复空间中,找到能够正确通过所有测试的补丁。
由于搜索代价往往是有限的,因此现有的基于搜索的方法会限制搜索空间的大小,然而如何针对不同的程序设定合适大小的搜索空间依然是个难题,原因在于:
(1)如果补丁搜索空间设置过小,那么很有可能在验证完所有生成的补丁后仍不能找到目标补丁;
(2)如果补丁搜索空间设置过大,验证完所有生成的补丁又需要花费大量的时间,搜索代价过于巨大。
现有的这种预先固定补丁搜索空间的方式不能确定合适的搜索空间大小,很容易存在大小不合理的现象,从而导致修复失败。
发明内容
发明目的:现有的基于固定搜索空间的方法采取预先设定搜索空间的方式,可能存在大小不合理的现象,空间过小或者过大都有可能在规定的时间限制内搜索不到正确补丁,因此往往需要对搜索代价和搜索结果做出权衡。本发明采用一种基于自适应搜索的方法,在修复过程中根据已生成补丁的疏密程度自适应地调整补丁搜索空间的大小。该技术方案需要考虑以下问题:
(1)通过判断哪些指标来决定是否需要调整搜索空间大小;
(2)通过哪些方式来实现调整搜索空间大小。
对于问题(1),由于补丁生成时采用随机搜索的策略,当搜索空间过小时,有较大概率重复生成相同的补丁,当搜索空间过大时,这一概率会变得极小。因此,本发明根据重复生成相同补丁的频率近似表示当前搜索空间内生成补丁的疏密程度。本发明定义了补丁生成窗口,记录生成的补丁及其缓存命中次数,通过将窗口内缓存命中数与上限阈值和下限阈值相比较,决定当前是否扩大或缩小搜索空间。
对于问题(2),通过分析我们发现影响补丁搜索空间的因素主要包括:缺陷语句数量、修改算子数量、可重用代码元素数量以及对源缺陷程序的最多修改位置。因此针对这四个因素,本发明制定了一系列策略来自适应调整搜索空间大小。对于缺陷语句,本发明动态调整缺陷定位阈值,只取可疑度大于阈值的语句;对于修改算子,根据其粒度划分为粗粒度的语句级别算子和细粒度的表达式级别算子;对于可重用代码元素,提出一种使用已有代码元素合成新代码元素的方法;对于最多修改位置,本发明实现了对程序中上下文相似的多处位置同时修改。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110447621.4/2.html,转载请声明来源钻瓜专利网。