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