System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种代码同源检测的方法、装置、设备及介质制造方法及图纸_技高网

一种代码同源检测的方法、装置、设备及介质制造方法及图纸

技术编号:41012206 阅读:13 留言:0更新日期:2024-04-18 21:48
本申请实施例提供一种代码同源检测的方法、装置、设备及介质,该方法包括:获取待检测代码文件,并且按照待检测代码文件中组成元素的类型将各组成元素替换为规范值,获得目标待检测代码文件,其中,一个组成元素的类型对应一个规范值;在确定待检测代码文件不存在同源代码文件的情况下,将目标待检测代码文件拆分为多个代码片段,计算多个代码片段中的各代码片段相应的指纹;基于各代码片段相应的指纹,确定目标待检测代码文件中与预设代码文件同源的目标片段,以及目标片段在代码文件中的所处位置。通过本申请的一些实施例结合代码文件的文件级和片段级检测,能够提高代码同源检测的准确性,提高检测精度。

【技术实现步骤摘要】

本申请实施例涉及代码检测领域,具体涉及一种代码同源检测的方法、装置、设备及介质


技术介绍

1、同源检测即同源性分析,指对应用程序或软件中的组成成分进行同源性分析,代码同源检测技术主要用于检测应用源代码中某个片段代码与预存的其他片段代码或开源代码存在的相同代码成分,因此也被称为代码克隆检测。相关技术中,建立源代码的特征提取后的知识库,然后基于该知识库对预设代码进行代码克隆检测,得到代码克隆检测结果。但是,相关技术中的检测方法仅能够对整体的代码进行同源性分析,不能够保证代码检测的准确性和检测精度。

2、因此,如何提高代码同源检测的准确性和精度成为需要解决的问题。


技术实现思路

1、本申请实施例提供一种代码同源检测的方法、装置、设备及介质,通过本申请的一些实施例至少能够结合代码文件的文件级和片段级检测,从而能够提高代码同源检测的准确性,提高检测精度。

2、第一方面,本申请提供了一种代码同源检测的方法,所述方法包括:获取待检测代码文件,并且按照所述待检测代码文件中组成元素的类型将各组成元素替换为规范值,获得目标待检测代码文件,其中,一个组成元素的类型对应一个规范值;在确定所述目标待检测代码文件不存在同源代码文件的情况下,将所述目标待检测代码文件拆分为多个代码片段,计算所述多个代码片段中的各代码片段相应的指纹,其中,所述各代码片段中包括m行代码,m为大于或等于1的整数;基于所述各代码片段相应的指纹,确定所述目标待检测代码文件中与预设代码文件同源的目标片段,以及所述目标片段在代码文件中的所处位置。

3、因此,与相关技术中直接使用整体文件进行代码同源检测的方法不同的是,本申请实施例通过按照组成元素的类型替换为规范值,能够保证将不同语言的代码变换为相同的格式,并且,本申请通过将待检测代码文件拆分为多个代码片段,能够保证代码同源检测的精度。

4、结合第一方面,在本申请的一种实施方式中,所述基于所述各代码片段相应的指纹,确定所述目标待检测代码文件中与预设代码文件同源的目标片段,以及所述目标片段在代码文件中的所处位置,包括:在代码片段指纹库中查找与所述各代码片段指纹相同的目标片段,并且提取所述目标片段所属的预设代码文件;根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置。

5、因此,本申请实施例通过查找与各代码片段指纹相同的目标片段,并且获取包含该目标片段的预设代码文件,能够保证先定位到与目标待检测代码文件同源的文件,之后确定同源代码的位置,能够提高同源检测的效率。

6、结合第一方面,在本申请的一种实施方式中,所述根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置,包括:提取所述预设代码文件和所述目标待检测代码文件中最长的公共字符串,获得第一字符串和第二字符串,其中,所述公共字符串为与所述目标片段相应的字符串;定位所述预设代码文件中与所述第一字符串相应代码的所处位置;并且,定位所述目标待检测代码文件中与所述第二字符串相应代码的所处位置。

7、因此,本申请实施例通过获取两个文件最长的公共字符串,并且确定位置,能够保证准确的对同源代码片段的位置进行定位,从而能够保证代码同源检测的精确性。

8、结合第一方面,在本申请的一种实施方式中,所述根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置,包括:获取所述预设代码文件中所有所述目标片段的开始行和结束行;并且,获取所述目标待检测代码文件中所有所述目标片段的开始行和结束行;将所述预设代码文件中所有所述目标片段的开始行和结束行进行合并,获得所述目标片段在所述预设代码文件中的位置;并且,将所述目标待检测代码文件中所有所述目标片段的开始行和结束行进行合并,获得所述目标片段在所述目标待检测代码文件中的位置。

9、因此,本申请实施例通过目标片段的开始行和结束行,确定目标片段在代码文件中的位置,能够实现片段级的代码检测,从而能够保证代码同源检测的精确性。

10、结合第一方面,在本申请的一种实施方式中,在所述获取待检测代码文件,并且按照所述待检测代码文件中组成元素的类型将各组成元素替换为规范值,获得目标待检测代码文件之后,所述方法还包括:在确定所述待检测代码文件不存在同源代码文件的情况下,获取所述目标待检测代码文件的行数,并且将所述行数的数值按照预设规则进行变更获得更新行数;在原始预设代码文件库中查找与所述更新行数相符的至少一个候选预设代码文件;计算各候选预设代码文件与所述目标待检测代码文件之间的相似度值,并且输出所述相似度值。

11、因此,本申请实施例通过变更目标待检测代码文件行数的方式,来查找相似的代码文件,能够提高代码检测的准确性,防止由于行数的出入而导致的匹配错误的情况发生。

12、结合第一方面,在本申请的一种实施方式中,在所述获取待检测代码文件,并且按照所述待检测代码文件中组成元素类型将各组成元素替换为规范值,获得目标待检测代码文件之后,所述方法还包括:将所述待检测代码文件的指纹与原始预设代码文件库中的各指纹进行比对;若指纹相同,则确定所述待检测代码文件存在同源代码文件,或者,若指纹均不相同,则确定所述待检测代码文件不存在同源代码文件。

13、因此,本申请实施例通过在进行片段级代码同源检测之前,对整体的同源代码文件进行判断,能够提高检测速度。

14、结合第一方面,在本申请的一种实施方式中,在所述获取待检测代码文件,并且按照所述待检测代码文件中组成元素类型将各组成元素替换为规范值,获得目标待检测代码文件之前,所述方法还包括:获取原始待检测代码文件,并且将所述原始待检测代码文件进行代码清洗获得所述待检测代码文件。

15、因此,本申请实施例通过对代码进行清洗,能够保证代码文件格式统一,从而能够提高匹配速度和准确度。

16、第二方面,本申请提供了一种代码同源检测的装置,所述装置包括:元素替换模块,被配置为获取待检测代码文件,并且按照所述待检测代码文件中组成元素的类型将各组成元素替换为规范值,获得目标待检测代码文件,其中,一个组成元素的类型对应一个规范值;片段拆分模块,被配置为在确定所述目标待检测代码文件不存在同源代码文件的情况下,将所述目标待检测代码文件拆分为多个代码片段,计算所述多个代码片段中的各代码片段相应的指纹,其中,所述各代码片段中包括m行代码,m为大于或等于1的整数;同源检测模块,被配置为基于所述各代码片段相应的指纹,确定所述目标待检测代码文件中与预设代码文件同源的目标片段,以及所述目标片段在代码文件中的所处位置。

17、结合第二方面,在本申请的一种实施方式中,所述同源检测模块还被配置为:在代码片段指纹库中查找与所述各代码片段指纹相同的目标片段,并且提取所述目标片段所属的预设代码文件;根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置。

18、结合本文档来自技高网...

【技术保护点】

1.一种代码同源检测的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述基于所述各代码片段相应的指纹,确定所述目标待检测代码文件中与预设代码文件同源的目标片段,以及所述目标片段在代码文件中的所处位置,包括:

3.根据权利要求2所述的方法,其特征在于,所述根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置,包括:

4.根据权利要求2所述的方法,其特征在于,所述根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置,包括:

5.根据权利要求1-4任一项所述的方法,其特征在于,在所述获取待检测代码文件,并且按照所述待检测代码文件中组成元素的类型将各组成元素替换为规范值,获得目标待检测代码文件之后,所述方法还包括:

6.根据权利要求1-4任一项所述的方法,其特征在于,在所述获取待检测代码文件,并且按照所述待检测代码文件中组成元素类型将各组成元素替换为规范值,获得目标待检测代码文件之后,所述方法还包括:

7.根据权利要求1-4任一项所述的方法,其特征在于,在所述获取待检测代码文件,并且按照所述待检测代码文件中组成元素类型将各组成元素替换为规范值,获得目标待检测代码文件之前,所述方法还包括:

8.一种代码同源检测的装置,其特征在于,所述装置包括:

9.一种电子设备,其特征在于,包括:处理器、存储器和总线;

10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被执行时可实现如权利要求1-7任一项所述方法。

...

【技术特征摘要】

1.一种代码同源检测的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述基于所述各代码片段相应的指纹,确定所述目标待检测代码文件中与预设代码文件同源的目标片段,以及所述目标片段在代码文件中的所处位置,包括:

3.根据权利要求2所述的方法,其特征在于,所述根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置,包括:

4.根据权利要求2所述的方法,其特征在于,所述根据所述预设代码文件和所述目标待检测代码文件,确定所述目标片段在代码文件中的所处位置,包括:

5.根据权利要求1-4任一项所述的方法,其特征在于,在所述获取待检测代码文件,并且按照所述待检测代码文件中组成元素的类型将各组成元素替换为规范值,获得目标待检测代...

【专利技术属性】
技术研发人员:张涛刘恩炙张弛王雪松周辜名
申请(专利权)人:北京安普诺信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1