System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及代码管理,具体涉及一种代码抄袭检测方法及装置。
技术介绍
1、代码检测,通常用于检测源代码中是否存在目标代码。例如,开放源代码软件就是在开放源代码许可证下发布的软件,以保障软件用户自由使用及接触源代码的权利。开源代码免费向开发者开放,在一定程度上降低了软件开发工程的成本,但是另一方面,由于很多开源代码在稳定性和功能性上存在一定缺陷,或者存在一些使用权限方面的限制,导致使用开源代码开发的软件,容易出现运行性能、安全性或者法律版权方面的问题。又例如,数字芯片的设计方式主要由芯片硬件描述语言设计、芯片综合、芯片物理设计等层面组成,而硬件描述语言设计(即rtl代码设计)是其中重要环节,一些重要的知识产权模块(ip模块),有可能是对现有ip模块代码的简单复制,从而也存在运行性能、安全性或者法律版权方面的隐患。
2、目前,在代码检测方面,业界往往通过专家检查的方式进行。例如,设计厂商负责人对架构进行讲解,专家对代码进行人工比对,通过人工方式结合设计能力和代码文本进行主观评判。但是,依靠人工进行代码比对的代码检测方式,效率低下,准确率差,增加了代码开发总体成本。
技术实现思路
1、本申请的至少一个实施例提供了一种代码抄袭检测方法及装置,用于解决代码检测效率低、准确性差等问题。
2、为了解决上述技术问题,本申请是这样实现的:
3、第一方面,本申请实施例提供了一种代码抄袭检测方法,包括:
4、获取待检代码中代码模块之间调用关系的第一树形拓扑,
5、生成待检扩展灰度图,所述待检扩展灰度图包括所述待检子拓扑中各个代码模块的灰度图,且各个代码模块的灰度图在所述待检扩展灰度图中的位置是按照预设规则确定的;
6、将每个待检扩展灰度图输入至代码检测模型,获得所述待检代码是否为参考代码的检测结果,其中,所述代码检测模型用于识别扩展灰度图对应的参考代码。
7、可选的,在得到所述至少一个待检子拓扑之前,所述方法还包括:
8、获取参考代码中的代码模块之间调用关系的第二树形拓扑,从所述第二树形拓扑中提取参考子拓扑,所述参考子拓扑包括n级,且以顶层代码模块作为第一级;
9、生成参考扩展灰度图,为所述参考扩展灰度图标注所述参考代码的标签,获得所述参考代码对应的训练数据,其中,所述参考扩展灰度图包括所述参考子拓扑中各个代码模块的灰度图,且各个代码模块的灰度图在所述参考扩展灰度图中的位置是按照所述预设规则确定的;
10、基于至少一种参考代码对应的训练数据,训练得到所述代码检测模型,所述代码检测模型用于识别扩展灰度图对应的参考代码。
11、可选的,同一级代码模块的灰度图的相同行的行像素,在所述待检扩展灰度图或参考扩展灰度图中处于同一行;在同一级代码模块的灰度图具有不同行数的行像素时,按照该级代码模块的灰度图中的最大行数,对低于该最大行数的灰度图进行补零操作,使该级代码模块的灰度图均达到最大行数。
12、可选的,同一级代码模块的灰度图,是按照各个灰度图的列数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
13、可选的,同一级代码模块的灰度图的相同列的列像素,在所述待检扩展灰度图或参考扩展灰度图中处于同一列;在同一级代码模块的灰度图具有不同列数的列像素时,按照该级代码模块的灰度图中的最大列数,对低于该最大列数的灰度图进行补零操作,使该级代码模块的灰度图均达到最大列数。
14、可选的,同一级代码模块的灰度图,是按照各个灰度图的行数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
15、可选的,每个代码模块的灰度图是按照以下步骤生成的:
16、确定所述代码模块包括的预设字符的种类数量以及每种字符的出现频次;
17、按照所述预设字符的种类数量,确定该代码模块的灰度图的量化级别;
18、按照所述出现频次,对所述代码模块中的所有预设字符进行排序,并按照所述量化级别,依次确定排序后的每种预设字符对应的灰度值;
19、根据每种预设字符对应的灰度值,生成所述代码模块的灰度图,其中,所述灰度图中的各个行像素依次对应于所述代码模块中对应的行代码中的各个预设字符,且在不同行具有不同数量的预设字符时,通过补零操作使所有行具有相同像素数量。
20、可选的,所述预设字符的种类包括以下至少一种:代码中的预定义关键词、符号、变量名。
21、可选的,所述将每个待检扩展灰度图输入至代码检测模型,获得所述待检代码是否为参考代码的检测结果,包括:
22、将每个待检扩展灰度图输入至代码检测模型,获得所述代码检测模型输出的所述待检扩展灰度图对应的参考代码的识别结果;
23、在所述识别结果表示至少一个待检扩展灰度图对应于参考代码时,输出所述待检代码为对应的参考代码的第一检测结果,否则,输出所述待检代码不是参考代码的第二检测结果。
24、第二方面,本申请实施例提供了一种代码抄袭检测装置,包括:
25、第一提取模块,用于获取待检代码中代码模块之间调用关系的第一树形拓扑,从所述第一树形拓扑中提取出至少一个待检子拓扑,其中,每个待检子拓扑包括n级,第一级包括一个代码模块,所述n为大于或等于2的整数;
26、第一生成模块,用于生成待检扩展灰度图,所述待检扩展灰度图包括所述待检子拓扑中各个代码模块的灰度图,且各个代码模块的灰度图在所述待检扩展灰度图中的位置是按照预设规则确定的;
27、检测模块,用于将每个待检扩展灰度图输入至代码检测模型,获得所述待检代码是否为参考代码的检测结果,其中,所述代码检测模型用于识别扩展灰度图对应的参考代码。
28、可选的,还包括:
29、第二提取模块,用于获取参考代码中的代码模块之间调用关系的第二树形拓扑,从所述第二树形拓扑中提取参考子拓扑,所述参考子拓扑包括n级,且以顶层代码模块作为第一级;
30、第二生成模块,用于生成参考扩展灰度图,为所述参考扩展灰度图标注所述参考代码的标签,获得所述参考代码对应的训练数据,其中,所述参考扩展灰度图包括所述参考子拓扑中各个代码模块的灰度图,且各个代码模块的灰度图在所述参考扩展灰度图中的位置是按照所述预设规则确定的;
31、训练模块,用于基于至少一种参考代码对应的训练数据,训练得到所述代码检测模型,所述代码检测模型用于识别扩展灰度图对应的参考代码。
32、可选的,同一级代码模块的灰度图的相同行的行像素,在所述待检扩展灰度图或参考扩展灰度图中处于同一行;在同一级代码模块的灰度图具有不同行数的行像素时,按照该级代码模块的灰度图中的最大行数,对低于该最大行数的灰度图进行补零操作,使该级代码模块的灰度图均达到最大行数。
3本文档来自技高网...
【技术保护点】
1.一种代码抄袭检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在得到所述至少一个待检子拓扑之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,
4.根据权利要求3所述的方法,其特征在于,同一级代码模块的灰度图,是按照各个灰度图的列数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
5.根据权利要求2所述的方法,其特征在于,
6.根据权利要求5所述的方法,其特征在于,同一级代码模块的灰度图,是按照各个灰度图的行数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
7.根据权利要求2所述的方法,其特征在于,每个代码模块的灰度图是按照以下步骤生成的:
8.根据权利要求7所述的方法,其特征在于,所述预设字符的种类包括以下至少一种:代码中的预定义关键词、符号、变量名。
9.根据权利要求1所述的方法,其特征在于,所述将每个待检扩展灰度图输入至代码检测模型,获得所述待检代码是否为参考代码的检测结果,包括:
10.一种代码抄袭检测装置,
11.根据权利要求10所述的装置,其特征在于,还包括:
12.根据权利要求11所述的装置,其特征在于,
13.根据权利要求12所述的装置,其特征在于,同一级代码模块的灰度图,是按照各个灰度图的列数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
14.根据权利要求11所述的装置,其特征在于,
15.根据权利要求14所述的装置,其特征在于,同一级代码模块的灰度图,是按照各个灰度图的行数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
16.根据权利要求11所述的装置,其特征在于,还包括:
17.根据权利要求16所述的装置,其特征在于,所述预设字符的种类包括以下至少一种:代码中的预定义关键词、符号、变量名。
18.根据权利要求10所述的装置,其特征在于,所述检测模块,还用于:
19.一种代码抄袭检测装置,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至9任一项所述的方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9任一项所述的方法的步骤。
...【技术特征摘要】
1.一种代码抄袭检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在得到所述至少一个待检子拓扑之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,
4.根据权利要求3所述的方法,其特征在于,同一级代码模块的灰度图,是按照各个灰度图的列数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
5.根据权利要求2所述的方法,其特征在于,
6.根据权利要求5所述的方法,其特征在于,同一级代码模块的灰度图,是按照各个灰度图的行数大小的顺序,设置在所述参考扩展灰度图和待检扩展灰度图中。
7.根据权利要求2所述的方法,其特征在于,每个代码模块的灰度图是按照以下步骤生成的:
8.根据权利要求7所述的方法,其特征在于,所述预设字符的种类包括以下至少一种:代码中的预定义关键词、符号、变量名。
9.根据权利要求1所述的方法,其特征在于,所述将每个待检扩展灰度图输入至代码检测模型,获得所述待检代码是否为参考代码的检测结果,包括:
10.一种代码抄袭检测装置,其特征在于,包括:
11.根据权利要求10所述的装置,其特征在于,还包括:
【专利技术属性】
技术研发人员:金鹏,王大鹏,李男,
申请(专利权)人:中国移动通信有限公司研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。