[发明专利]一种采用GPU加速的近似代码克隆检测方法有效
申请号: | 201910065276.0 | 申请日: | 2019-01-23 |
公开(公告)号: | CN109828785B | 公开(公告)日: | 2022-04-12 |
发明(设计)人: | 吴毅坚;彭鑫 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明属于软件代码分析技术领域,具体为一种采用GPU加速的近似代码克隆检测方法。本发明通过将多个软件项目的源代码进行标签化,转换为有标签序列组成的串,然后采用GPU并行方法将该串构造为根据后缀字符串排序的后缀数组,并获得连续代码片段的克隆,最后将小于代码克隆长度阈值但不小于候选克隆长度阈值的代码克隆片段根据所在代码文件中的位置通过GPU并行加速的方法进行排序,并计算克隆片段合并后能否满足近似克隆的相似度阈值要求。若代码相似度满足阈值要求,则记录为近似代码克隆。本发明能在海量代码中在代码片段粒度上快速检测近似代码克隆。 | ||
搜索关键词: | 一种 采用 gpu 加速 近似 代码 克隆 检测 方法 | ||
【主权项】:
1.一种检测效率高的在大规模代码环境下快速检测近似克隆的方法,其特征在于,采用后缀数组作为代码的内部表示形式,在后缀数组构造和近似克隆检测方面采用GPU加速计算,具体步骤如下:(1)将代码库中的所有源代码进行标签化,通过特征词表对代码文本进行转换,将代码中的类型名、标识符、常量、计算符以及其他终结符转换为标签,并将所有代码文件中的非注释内容以标签的形式串接起来形成一个完整的串;(2)对所建立的标签串采用数据并行的前缀倍增方法构造代码标签串的后缀数组;(3)根据代码标签串的后缀数组表示形式,检查后缀数组相邻元素所对应的代码标签后缀串的相同前缀的长度l,如果l超过克隆最小长度阈值mc,则报告为代码克隆;如果长度l不足最小长度阈值mc但是达到最小候选克隆长度阈值mcc,则记录为候选代码克隆;(4)对候选代码克隆的两段克隆代码片段根据所在的位置进行排序;(5)对相邻的候选代码克隆检查是否可以合并为一个近似克隆,如果两个相邻的候选代码克隆中,一个克隆的两个代码片段所在的位置与另一个克隆的两个代码片段所在的位置分别对应,并且符合近似克隆的判别标准,则这两个克隆合并为一个近似克隆。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910065276.0/,转载请声明来源钻瓜专利网。