[发明专利]一种采用GPU加速的近似代码克隆检测方法有效
申请号: | 201910065276.0 | 申请日: | 2019-01-23 |
公开(公告)号: | CN109828785B | 公开(公告)日: | 2022-04-12 |
发明(设计)人: | 吴毅坚;彭鑫 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 采用 gpu 加速 近似 代码 克隆 检测 方法 | ||
本发明属于软件代码分析技术领域,具体为一种采用GPU加速的近似代码克隆检测方法。本发明通过将多个软件项目的源代码进行标签化,转换为有标签序列组成的串,然后采用GPU并行方法将该串构造为根据后缀字符串排序的后缀数组,并获得连续代码片段的克隆,最后将小于代码克隆长度阈值但不小于候选克隆长度阈值的代码克隆片段根据所在代码文件中的位置通过GPU并行加速的方法进行排序,并计算克隆片段合并后能否满足近似克隆的相似度阈值要求。若代码相似度满足阈值要求,则记录为近似代码克隆。本发明能在海量代码中在代码片段粒度上快速检测近似代码克隆。
技术领域
本发明属于软件代码分析技术领域,具体涉及一种采用GPU加速的近似代码克隆检测方法。
背景技术
代码克隆检测是从软件源代码中找到重复的相同或相似代码片段的技术。早在20世纪90年代,就有研究者注意到软件代码的重复特性。重复代码或代码克隆一般分为四种类型。I型(Type-1)克隆是指完全相同的代码片段。II型(Type-2)克隆是指参数化的相似代码,它们除了标识符、常量、类型不同外,其他都相同。III型(Type-3)克隆是指存在添加、删除或超出II型克隆以外的其他修改的相似代码。IV型(Type-4)克隆是指语义相似的代码,即语法结构上可能完全不同,但代码语义相似。在代码克隆检测技术中,比较成熟的主要是针对I型、II型、III型的克隆检测;而在可检测III型克隆的技术中,又以检测近似克隆(near-miss clones)的方法为主。
从代码克隆的逻辑单元粒度而言,代码克隆有文件(file)粒度、方法或函数(method/function)粒度和片段(fragment)粒度。文件粒度的代码克隆由于粒度较粗,因此检测快速,但是精确度也较低。由于代码的复用经常以方法、函数或代码片段为主,因此方法或函数粒度和片段粒度的克隆检测是当前研究的主要关注点。
2002年大阪大学的研究者研发CCFinder[1]克隆检测工具,采用后缀树对代码克隆进行检测,能实现百万行级代码的I型和II型片段粒度的克隆检测。随着计算机硬件能力的提升以及研发者对该工具的改进,该工具目前已形成亿行代码的I型II型克隆检测能力。2008年加拿大研究人员研发了NICAD[2]工具,以代码行作为比较对象,实现方法或函数粒度的克隆检测,重点提升了近似克隆的检测效果。还有其他一些研究采用基于树、图的方法对代码克隆检测技术进行研究,形成了大量成果,但由于检测效率不高,无法支持亿行级代码的跨项目近似克隆检测。近年来,随着开源代码生态的日益繁荣以及代码数据量的日益增大,代码克隆检测逐渐向更大规模代码库的跨项目克隆方向发展。2016年美国和加拿大研究人员研发了SourcererCC[3]克隆检测工具,采用代码词袋化技术和启发式规则,能在亿行级代码中检测具有给定边界的代码的近似克隆,然而该工具在2.5亿行代码中检测方法粒度的近似克隆仍然需要花费4.5天的时间。2017年研究人员研发了CloneWorks[4]综合采用了多种策略提升了大规模代码的检测效率,是当前最快的近似克隆检测工具,然而该工具给出保守和激进两种不同的运行策略,其检测准确性和性能两方面难以同时保持较高水平。
在现有的克隆检测方法中,将代码进行标签化后表示为后缀树或者后缀数组是一种常用的方法。这种方法能检测任意代码片段的代码克隆,如CCFinder。然而,采用后缀树的方法需要耗费较大的内存,因此在内存有限的情况下难以处理超大规模的代码。后缀数组表示法能节约内存使用,但由于需要耗费更多的计算,因此检测效率较差。2014年在生物医学和生物信息学领域有学者提出了一种数据并行的前缀倍增方法(DPPD方法)[5],使用GPU加速后缀数组构造,充分利用GPU的并行计算能力,提升了大字符串的后缀数组的构造效率。但该方法主要用于基因序列分析等生物领域,并未在代码分析领域用于源代码的克隆检测。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910065276.0/2.html,转载请声明来源钻瓜专利网。