[发明专利]一种基于代码修改模式差异的缺陷纠错方法有效
| 申请号: | 201910170495.5 | 申请日: | 2019-03-07 |
| 公开(公告)号: | CN109918127B | 公开(公告)日: | 2022-02-11 |
| 发明(设计)人: | 魏颖;孙小兵;李斌 | 申请(专利权)人: | 扬州大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75 |
| 代理公司: | 南京苏科专利代理有限责任公司 32102 | 代理人: | 董旭东;赵荔 |
| 地址: | 225000 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 代码 修改 模式 差异 缺陷 纠错 方法 | ||
1.一种基于代码修改模式差异的缺陷纠错方法,其特征在于,包括以下步骤:
(1)通过爬虫获取缺陷检索平台Bugzilla中状态为resolved的缺陷报告,包括其title、description、缺陷间关系以及代码部分,并进行数据清洗,再按照缺陷报告ID的顺序将以duplicate关系连接起来的缺陷报告形成一个簇;
(2)利用TF-IDF算法对各簇内缺陷的title和description进行关键词提取,作为该簇的主题词;
(3)在确认好簇的主题词后,再利用TF-IDF算法对其余缺陷报告进行关键词提取,并加入相应关键词的簇中;
(4)对于每个簇中的报告,运用一种称为CDLH的代码克隆检测算法对比每两个报告提交的源代码,并得到代码克隆对,查找出每个缺陷报告中有源代码克隆部分的diff信息,并分别对每份diff信息做修改模式差异图,其中判断两个缺陷报告中的两段代码是否是代码克隆对的步骤具体的为,
(401)输入原始代码片段,并将其转化为AST;
(402)使用基于AST的LSTM来获得每个代码片段的实值表示;
(403)通过哈希函数将步骤(402)中得到的实值编码转化为二进制哈希码;
(404)给定一对哈希代码,运用函数来判定代码ai和代码aj是否是代码克隆对,若条件满足则返回函数g(ai,aj)的值为1,即判定代码ai和代码aj为代码克隆对;否则返回函数g(ai,aj)的值为-1,代码ai和代码aj不是代码克隆对;
(5)计算差异比例,差异比例的计算公式具体的为:
(1);
若差异比例不小于65~75%,则认为两者大多做了同种修改,则其余缺陷的修改可能存在问题,并将有修复问题的缺陷发送给报告提出者进行重新检验、修复;
其中,ai和aj为两个哈希表示的代码段,k为汉明空间的维度,m为汉明空间的维度总数,ai,k表示代码段ai在维度k中的哈希值,aj,k为代码段aj在维度k中的哈希值,是指标函数,thr为阈值且取值为2;分别为两个缺陷报告中某修改模式的次数,分别为两个缺陷报告中修改模式的权重,分别为两个缺陷中修改模式的总样数,为两者的差异比例值。
2.根据权利要求1所述的一种基于代码修改模式差异的缺陷纠错方法,其特征在于,所述步骤(2)中,提取关键词的具体步骤为:TF-IDF算法由TF和IDF两部分组成,TF是对文本中各个词的出现进行频率统计,而IDF是用来赋予每个词特定的权重,分别计算两个值之后,将两者相乘得到TF-IDF值,并对文档中每个词的值进行排序,选取其中值最高的几个作为主题词。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910170495.5/1.html,转载请声明来源钻瓜专利网。





