[发明专利]基于后缀树的代码文件克隆检测方法有效
申请号: | 201710140414.8 | 申请日: | 2017-03-10 |
公开(公告)号: | CN106990956B | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 罗峋;饶飞 | 申请(专利权)人: | 苏州棱镜七彩信息科技有限公司 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 北京同辉知识产权代理事务所(普通合伙) 11357 | 代理人: | 刘洪勋 |
地址: | 215000 江苏省苏州市工业*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 后缀 代码 文件 克隆 检测 方法 | ||
本发明涉及一种基于后缀树的代码文件克隆检测方法,对工程项目文件构造后缀树,在线性时间内实现代码文件克隆检测。LP检测方案及算法是以计算机软件源代码文件内容为粒度,通过对代码文件进行词法分析过滤,并MD5哈希得到指纹值,构造指纹建立指纹库。指纹库保存在MySQL数据库中,以指纹所在的开源项目id作为索引。可以直接提取后缀树中被标记为克隆结果的节点,将这些节点直接保存到克隆结果数据表中。由此,能在线性时间内检测出克隆的代码文件,比直接按照指纹值进行检测有更高效率,实现海量检测。
技术领域
本发明涉及一种检测方法,尤其涉及一种基于后缀树的代码文件克隆检测方法。
背景技术
从软件产业的诞生到现在,随着计算机用户数量快速增加,软件产业发展迅猛,已渗透到人们工作与生活的方方面面。许多软件源代码开放在互联网上,开发人员在互联网查询所需要的相关代码已成为一种快速有效的生产方式。由于共同的软件功能,经过简单修改或者直接的复制粘贴,代码重用已经是软件开发中一个通用行为。开源代码的快速发展,上百万的软件工程源代码在相关网络上可以查找,如Google Code Search,GitHub,Snippir,SourceForge,GitHub等,今天开源代码已经在软件发展中处于重要地位。随之而来的现象就是,无论有意或无意的复制开源代码,软件系统存在代码段与其他代码非常相似,也称之为代码克隆。在一般的软件系统中都存在明显代码克隆部分,代码相似比例在7%-23%。
代码克隆通常是有目的性的,可以减轻开发人员重复性工作,专注核心功能研发等,从这些方面来说是有用的。但是也存在许多问题不利于软件的维护和扩展。例如,在一个代码段中存在漏洞,所有相似的代码段都应该被检测出相同漏洞。特别是直接使用开源代码,没有任何风险意识的人员也将开源代码的问题带入开发的软件系统。这些产品应用在国防、医疗、金融等重要领域,给工作带来巨大的潜在风险。
在大型软件系统中,代码的雷同、抄袭现象频发,人们维权意识增强,一些代码克隆侵犯了其他软件公司的知识产权。为保护软件产权,软件公司提前做好软件技术秘密的认定、保密措施,申请专利权、软件著作权登记。但是在发生侵权行为后,需要对软件产品进行判定,以维护自己的权利,这对两方公司都产生严重影响。
无意识的代码克隆使软件产品引入外部风险,可以依赖代码克隆检测,在软件开发过程中得到避免或警示。一方面根据开源代码公布的漏洞,代码克隆检测出所有漏洞,可以让开发人员认识存在的问题,对风险进行识别再决定是否使用开源代码。另一方面,也能了解软件系统使用非自主开发代码情况,评估该软件产品的技术含量。
还存在许多其他的软件工程任务需要代码克隆检测,如程序理解,了解克隆代码领域知识;代码质量分析,较少的克隆可能意味着更好的代码质量;对软件进行演化分析;分析代码重复程度,对代码进行压缩;根据代码来源进行代码病毒检测以及代码错误检测。而软件开发基于计算机语言,语言结构简单,比自然语言更易被机器识别。软件工程任务需要能够自主进行代码克隆检测的工具,识别克隆代码的漏洞、知识产权、授权许可等信息。并且与一般文本的自然语言克隆检测不同,根据不同类型的代码克隆,代码克隆有一定规律性,也更适合自动检测。
现在代码克隆检测研究都是基于两个代码段间进行比对,实际无法提前知道该软件复制哪些代码源,需要将代码与大量代码进行匹配检测,对于检测效率有更高的要求。而使用开源代码是直接导入整个开源项目,若进行代码内容匹配则花费更多时间。本专利在代码克隆检测对象上,由一对一向一对多进行,分析不同克隆情况并开发检测工具,进行实际应用。
有鉴于上述的缺陷,本设计人,积极加以研究创新,以期创设一种基于后缀树的代码文件克隆检测方法,使其更具有产业上的利用价值。
发明内容
为解决上述技术问题,本发明的目的是提供一种基于后缀树的代码文件克隆检测方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州棱镜七彩信息科技有限公司,未经苏州棱镜七彩信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710140414.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种对应用程序进行打点的方法和系统
- 下一篇:一种窗口切换方法及装置