[发明专利]源代码克隆识别方法及系统在审
申请号: | 202110317456.0 | 申请日: | 2021-03-25 |
公开(公告)号: | CN112698861A | 公开(公告)日: | 2021-04-23 |
发明(设计)人: | 汪杰;万振华;王颉;董燕;李华 | 申请(专利权)人: | 深圳开源互联网安全技术有限公司 |
主分类号: | G06F8/70 | 分类号: | G06F8/70 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 张艳美;赵贯杰 |
地址: | 518000 广东省深圳市龙华区龙华*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 源代码 克隆 识别 方法 系统 | ||
本发明公开一种源代码克隆识别方法及系统,该方法包括:首先,收集源码文件,生成源码库;其次,采用降维算法分别对源码库中的每一源码文件进行处理,以生成若干第一字符串;然后,采用降维算法对目标代码文件进行处理,以生成第二字符串;接着,将第二字符串分别与若干第一字符串进行匹配分析,获得匹配度最高的N个第一字符串;最后,对目标代码文件与上N个第一字符串所对应的源码文件中的代码进行比对;通过上述源代码克隆识别方法,可从海量源码库中快速筛选出相似度比较高的N个开源源码文件,然后只需针对这N个开源的源码文件逐个进行代码比对即可,从而不但可从代码层面上识别检测克隆代码,识别精准度高,而且还有效提高了检测效率。
技术领域
本发明涉及软件代码克隆识别技术领域,尤其涉及一种源代码克隆识别方法及系统。
背景技术
在软件开发过程中,为加快开发进度和成本,软件工程师会经常用到一些开源软件,直接或通过一些简单加工将之克隆到当前开发项目中。然而由于开源成分的引入,免不了会引入一些漏洞,因此,当项目开发完成后,需要对项目中的开源成分进行分析,就是分析项目中引用的开源成分,包括使用的开源组件或者拷贝的部分开源代码。目前已经有很多SCA工具(软件组合分析工具)已经可以支持开源成分的分析,但是这些工具大都是基于项目的特征文件来分析项目的开源成分,也就是分析项目中使用到的开源组件,而基于代码的开源成分分析则很少,主要是因为基于海量的开源代码进行开源成分的分析难度很大,检测效率很难达到理想效果。
发明内容
本发明的目的是为解决上述技术问题而提供一种源代码克隆识别方法及系统,以从代码层面上进行开源成分分析,进而完成代码克隆的检测,且具有理想的检测效率。
为了实现上述目的,本发明公开了一种源代码克隆识别方法,其包括:
收集并存储源码文件,以生成源码库;
采用降维算法分别对所述源码库中的每一所述源码文件进行分析处理,以生成若干分别与每一所述源码文件对应的包括若干位字节的第一字符串;
采用降维算法对目标代码文件进行分析处理,以生成与之对应的包括若干位字节的第二字符串;
将所述第二字符串分别与若干所述第一字符串进行匹配分析,根据预设要求,获得匹配度最高的N个所述第一字符串,N≥1;
对所述目标代码文件与上述匹配度最高的N个所述第一字符串所对应的源码文件中的代码进行比对,并根据预设敏感度输出比对结果。
与现有技术相比,本发明源代码克隆识别方法,采用降维算法对源码库中的源码文件进行处理,以得到代表源码文件信息的第一字符串,将处理得到的这些第一字符串存储在数据库中,当对目标代码文件进行检测时,同样地,采用降维算法对该目标代码文件进行处理,得到第二字符串,然后,将第二字符串分别与若干第一字符串进行匹配分析,按照匹配度的高低,根据需求,找出若干作为重点检测目标的第一字符串,然后将目标代码文件分别与这些找出的第一字符串对应的源码文件进行代码的逐行比对,并根据预设敏感度输出比对结果;由此可知,通过上述源代码克隆识别方法,可从海量源码库中快速筛选出相似度比较高的N个开源源码文件,然后只需针对这N个开源的源码文件逐个进行代码比对即可,从而不但可从代码层面上识别检测克隆代码,识别精准度高,而且还有效提高了检测效率。
较佳地,所述降维算法包括局部敏感哈希算法。
较佳地,源码库中所述源码文件的存储方法包括:
将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下;
在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录,所述文件存储目录中还具有一记录文件,所述记录文件用于记录存储在该文件存储目录下的所述源码文件与其所属的类目录下所有版本代码所对应的版本号和路径信息;
检测当前所要存储的所述源码文件在当前所述类目录下是否已存储,如果是,放弃存储当前所要存储的所述源码文件,并在已存储的所述源码文件所对应的所述记录文件中添加与当前所要存储的源码文件所对应的版本号和路径信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳开源互联网安全技术有限公司,未经深圳开源互联网安全技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110317456.0/2.html,转载请声明来源钻瓜专利网。