[发明专利]面向bug报告的自动化修复方法有效
申请号: | 201910757075.7 | 申请日: | 2019-08-16 |
公开(公告)号: | CN110442527B | 公开(公告)日: | 2023-07-18 |
发明(设计)人: | 孙小兵;马荧炜;曹琛;谢昊;杨硕;张婧玉 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/07 |
代理公司: | 南京苏科专利代理有限责任公司 32102 | 代理人: | 董旭东;陈栋智 |
地址: | 225000 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 bug 报告 自动化 修复 方法 | ||
1.一种面向bug报告的自动化修复方法,其特征在于,包括以下步骤:
步骤1)利用缺陷定位技术定位到bug报告,得到具体文件中的具体类中函数的可疑bug语句块,定位bug语句块具体为:根据缺陷定位技术评估语句块可疑度,选取可疑度排在前面的Top N的语句块构成可疑bug语句块列表,每次修复时,选取可疑度最高的语句块;
步骤2)根据bug语句块所在的函数提取函数关键信息,并使用领域特定语言构造函数特征规约;
步骤3)提取bug报告中的产品信息、组件信息、软件版本信息、平台信息以及bug报告内配套输入输出测试集,并使用领域特定语言将这些信息构造为报告规约;
步骤4)构造 “草案”,“草案”包括可疑bug语句块所在的函数,以及分别在步骤2和步骤3中构造的规约;
步骤5)基于“草案”搜索补丁数据库,比较补丁数据库内各个补丁规约与“草案”中规约相似度大小,返回一组与“草案”中的函数相似度较高的候选函数,构成候选函数列表;
步骤6)根据步骤5,选取候选函数列表中相似度最高的函数,分析该候选函数与“草案”中的函数的具体语法树,在候选函数具体语法树中寻找一个节点,该节点与“草案”中的函数具体语法树中可疑bug语句块的父级类型一致,然后将该节点的子节点所代表的语句块作为候选补丁,并用该候选补丁替换“草案”中函数内的可疑bug语句块;
步骤7)根据报告规约中的输入输出测试集,单元测试“草案”中的函数,根据输出结果验证修复正确性。
2.根据权利要求1所述面向bug报告的自动化修复方法,其特征在于,步骤2)中的函数关键信息包括函数参数类型 、返回类型、函数名称、调用的API、函数内分支和循环信息。
3.根据权利要求1所述面向bug报告的自动化修复方法,其特征在于,步骤5)中的补丁数据库内包含了大量人工历史修复补丁函数以及对应的补丁规约,补丁规约具体是使用DSL从该补丁的产品信息、组件信息、软件版本信息、函数特征和补丁输入输出测试集中提取的规约。
4.根据权利要求1所述面向bug报告的自动化修复方法,其特征在于,步骤6)用候选补丁替换“草案”中的可疑bug语句块后,运用递归方法寻找“草案”中bug函数与候选函数变量引用之间的映射,使用变量类型来指导变量名替代,使“草案”内函数变量命名统一。
5.根据权利要求1所述面向bug报告的自动化修复方法,其特征在于,步骤7)的修复正确性验证结果若正确,修复成功;若错误,则不考虑本次修复并从候选函数列表内剔除该候选函数,重复步骤6)至步骤7);若候选函数列表为空,则本个可疑bug语句块修复失败,从可疑bug语句块列表中剔除该语句块,再选取可疑bug语句块列表内可疑度最高的语句块,重复步骤2)至步骤7);若可疑bug语句块列表为空,则本次面向bug报告的自动化修复方法完成。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910757075.7/1.html,转载请声明来源钻瓜专利网。