首页> 中国专利> 程序代码抄袭检测方法及设备

程序代码抄袭检测方法及设备

摘要

本申请涉及一种程序代码抄袭检测方法及设备,方法包括:将待检测程序代码集合中各待检测程序代码转换为XML文本。根据各待检测程序代码对应的XML文本,计算各待检测程序代码的相似值。提取各待检测程序代码的特征属性,根据各待检测程序代码对应的XML文本的相似值,及各待检测程序代码的特征属性,对待检测程序代码集合中的各待检测程序代码进行聚类,根据聚类结果生成检测报告。由于本申请中,在得到各待检测程序代码对应的XML文本的相似值后,还对待检测程序代码集合中的各待检测程序代码进行聚类,从而可以对抄袭集群进行分类显示,进而方便找出抄袭的“源头”代码。

著录项

  • 公开/公告号CN114969674A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 呼伦贝尔学院;

    申请/专利号CN202210372255.5

  • 申请日2022-04-11

  • 分类号G06F21/12(2013.01);G06K9/62(2022.01);

  • 代理机构成都科海专利事务有限责任公司 51202;

  • 代理人刘业芳

  • 地址 021008 内蒙古自治区呼伦贝尔市海拉尔区成吉思汗中路26号

  • 入库时间 2023-06-19 16:36:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):G06F21/12 专利申请号:2022103722555 申请日:20220411

    实质审查的生效

说明书

技术领域

本申请涉及代码抄袭检测技术领域,尤其涉及一种程序代码抄袭检测方法及设备。

背景技术

目前在大部分高等院校当中,使用计算机系统进行教学以及考核已经成为各个高校采用的普遍方法。尤其在程序设计类课程中,因其工程实践性非常强,几乎完全依赖计算机系统进行教学与考核。但是在考核中,许多学生常常以他人的程序为模板,简单地做少量修改,甚至不做修改直接作为自己的考核作业参与考核。在信息化时代,资源的获取更加方便,抄袭现象也越发严重,日益严重的抄袭现象不仅破坏了正常的教学秩序,而且还严重影响了学生个人素质的提高。因为判断程序代码抄袭是一项非常繁杂的工作,传统的人工检测手段耗时费力。而现有技术中对程序代码抄袭进行检测的手段一般只能判断两两程序代码之间的相似性,其相似度检测结果难以反映出一个待检测程序代码集合中的抄袭集群分类。

发明内容

为至少在一定程度上克服相关技术中对程序代码抄袭进行检测的相似度检测结果难以反映出一个待检测程序代码集合中的抄袭“团伙”分类的问题,本申请提供一种程序代码抄袭检测方法及设备。

本申请的方案如下:

根据本申请实施例的第一方面,提供一种程序代码抄袭检测方法,包括:

将待检测程序代码集合中各待检测程序代码转换为XML文本;

根据各所述待检测程序代码对应的XML文本,计算各所述待检测程序代码的相似值;

提取各所述待检测程序代码的特征属性;

根据各所述待检测程序代码对应的XML文本的相似值,及各所述待检测程序代码的特征属性,对所述待检测程序代码集合中的各所述待检测程序代码进行聚类;

根据聚类结果生成检测报告。

优选的,在本申请一种可实现的方式中,所述将待检测程序代码集合中各待检测程序代码转换为XML文本前,所述方法还包括:

对所述待检测程序代码进行正则匹配,提取所述待检测程序代码中每行语句的结构属性信息;

为每种所述结构属性信息均设置唯一标识;

将所述待检测程序代码中每行语句和对应的结构属性信息标识进行存储。

优选的,在本申请一种可实现的方式中,所述将待检测程序代码集合中各待检测程序代码转换为XML文本,包括:

基于预设的结构属性信息与XML文本的转换算法,根据所述待检测程序代码中每行语句对应的结构属性信息标识,将所述待检测程序代码集合中各待检测程序代码转换为XML文本。

优选的,在本申请一种可实现的方式中,所述根据各所述待检测程序代码对应的XML文本,计算各所述待检测程序代码的相似值,包括:

对所述XML文本中每一个含有body属性的结点进行标记;

由所述XML文本中最内层的所述结点开始递归,通过各所述结点包含的所有XML文本行的相似值计算各所述结点的属性提取行的相似值;

根据得到的所述XML文本各行的相似值计算各所述待检测程序代码的相似值。

优选的,在本申请一种可实现的方式中,所述根据各所述待检测程序代码对应的XML文本,计算各所述待检测程序代码的相似值,还包括:

根据预设的每种结构属性信息对应的相似值算法,以及所述XML文本转换前对应的结构属性信息,计算各所述待检测程序代码的相似值。

优选的,在本申请一种可实现的方式中,所述提取各所述待检测程序代码的特征属性,包括:

将所述待检测程序代码中提取的结构属性信息作为所述待检测程序代码进行聚类分析的特征;

将所述待检测程序代码根据各结构属性信息对应转换的XML文本的相似值作为所述待检测程序代码进行聚类分析的各特征的特征值。

优选的,在本申请一种可实现的方式中,所述提取各所述待检测程序代码的特征属性,还包括:

计算所述待检测程序代码集合中各特征值的平均值;

根据所述各特征值的平均值,对所述待检测程序代码缺少的特征值进行数据填补。

优选的,在本申请一种可实现的方式中,所述对所述待检测程序代码集合中的各所述待检测程序代码进行聚类后,所述方法还包括:

基于预设的相似度阈值,确定聚类后的各类待检测程序代码中的源头待检测程序代码。

优选的,在本申请一种可实现的方式中,所述结构属性信息至少包括:结构体,函数,指针,循环结构,条件结构,宏定义和其它。

根据本申请实施例的第二方面,提供一种程序代码抄袭检测设备,包括:

处理器和存储器;

所述处理器与存储器通过通信总线相连接:

其中,所述处理器,用于调用并执行所述存储器中存储的程序;

所述存储器,用于存储程序,所述程序至少用于执行如以上任一项所述的一种程序代码抄袭检测方法。

本申请提供的技术方案可以包括以下有益效果:本申请中的程序代码抄袭检测方法,包括:将待检测程序代码集合中各待检测程序代码转换为XML文本。根据各待检测程序代码对应的XML文本,计算各待检测程序代码的相似值。提取各待检测程序代码的特征属性,根据各待检测程序代码对应的XML文本的相似值,及各待检测程序代码的特征属性,对待检测程序代码集合中的各待检测程序代码进行聚类,根据聚类结果生成检测报告。由于本申请中,在得到各待检测程序代码对应的XML文本的相似值后,还对待检测程序代码集合中的各待检测程序代码进行聚类,从而可以对抄袭集群进行分类显示,进而方便找出抄袭的“源头”代码。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1是本申请一个实施例提供的一种程序代码抄袭检测方法的流程示意图;

图2是本申请一个实施例提供的一种程序代码抄袭检测设备的结构示意图。

附图标记:处理器-21;存储器-22。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

一种程序代码抄袭检测方法,参照图1,包括:

S11:将待检测程序代码集合中各待检测程序代码转换为XML文本;

本实施例中,在将待检测程序代码集合中各待检测程序代码转换为XML文本前,方法还包括:

对待检测程序代码进行正则匹配,提取待检测程序代码中每行语句的结构属性信息;

为每种结构属性信息均设置唯一标识;

将待检测程序代码中每行语句和对应的结构属性信息标识进行存储。

基于此,将待检测程序代码集合中各待检测程序代码转换为XML文本,包括:

基于预设的结构属性信息与XML文本的转换算法,根据待检测程序代码中每行语句对应的结构属性信息标识,将待检测程序代码集合中各待检测程序代码转换为XML文本。

本实施例中,结构属性信息至少包括:结构体,函数,指针,循环结构,条件结构,宏定义和其它。

本实施例中,系统读入每个待检测程序代码后,在对待检测程序代码进行格式化之前先对待检测程序代码进行正则匹配,提取待检测程序代码中每条语句的结构属性信息,同时给每种结构属性信息设置一个唯一的标识,用来代表不同的结构属性信息,然后将待检测程序代码中每条语句和与之对应的结构属性信息标识存储到对应的文件中,作为中间结果,等待下一步的回溯匹配。接下来根据预设的不同的结构属性信息转换为XML文本的算法,将待检测程序代码转换为对应的XML文本。

S12:根据各待检测程序代码对应的XML文本,计算各待检测程序代码的相似值;

包括:

对XML文本中每一个含有body属性的结点进行标记;

由XML文本中最内层的结点开始递归,通过各结点包含的所有XML文本行的相似值计算各结点的属性提取行的相似值;

根据得到的XML文本各行的相似值计算各待检测程序代码的相似值。

body属性的结点之间的文本内容即躯干内容。

本实施例中,预先针对不同的结构属性信息设计不同的结构属性信息与XML文本的转换算法,同时针对不同的结构属性信息设计不同的XML文本行相似度计算方法。

S13:提取各待检测程序代码的特征属性;

包括:将待检测程序代码中提取的结构属性信息作为待检测程序代码进行聚类分析的特征;

将待检测程序代码根据各结构属性信息对应转换的XML文本的相似值作为待检测程序代码进行聚类分析的各特征的特征值;

本实施例中,根据相似值和特征属性,采用聚类分析的方法找出抄袭集群以及抄袭的“源头”。在进行聚类分析前需要先进行特征选取,在特征选取时将待检测程序代码集合作为聚类分析的一个数据总集,把其中每一个待检测程序代码作为数据对象xi,将待检测程序代码中的各结构属性信息选取为聚类分析的特征,再利用上一步骤计算得到的各结构属性信息对应转换的XML文本的相似值作为每个数据对象的各个特征值,本实施例中选取的结构属性信息有:结构体,函数,指针,循环结构,条件结构,宏定义和其它。这样每个数据对象都可以由以上七个特征属性来表示,即每个数据对象xi=(x1,x2……x7)。

本实施例中,提取各待检测程序代码的特征属性,还包括:

计算待检测程序代码集合中各特征值的平均值;

根据各特征值的平均值,对待检测程序代码缺少的特征值进行数据填补。

优选的,本实施例中还进行数据转换。

本实施例中提取待检测程序代码的相似值的百分比前几位的小数,录入到预先创建的表中,表中每行代表一个待检测程序代码,每一行的数据为该待检测程序代码作为数据对象的特征值(x1,x2……x7),x1,x2……x7依次为:结构体,函数,指针,循环结构,条件结构、宏定义和其它。此时表中可能有些特征缺少特征值,缺少的特征值表示这个程序缺少对应的结构属性信息,而对于这些空缺,则需要使用数据清理技术来填补。本实施例中还计算待检测程序代码集合中各特征值的平均值,根据各特征值的平均值,对待检测程序代码缺少的特征值进行数据填补。

经过数据填补和数据转换后,会得到一个用于进行聚类的规格化表。

S14:根据各待检测程序代码对应的XML文本的相似值,及各待检测程序代码的特征属性,对待检测程序代码集合中的各待检测程序代码进行聚类;

实施例中根据各待检测程序代码对应的XML文本的相似值,及各待检测程序代码的特征属性,对待检测程序代码集合中的各待检测程序代码进行聚类。所有数据对象的特征可以看成是一个数据矩阵,其中第i个数据对象的P个变量的特征值可以记为向量:xi=(xi1,xi2……xip)T,然后通过聚类算法进行聚类分析,该聚类分析方法的基本思想为:①提取相似度值大于某一阈值的结构属性信息作为该待检测程序代码的结构属性信息。②根据每个结构属性信息在待检测程序代码中占的比重大小,将其量化为一组由关键字权值构成的向量。③将未分类的待检测程序代码与某个簇中的每个待检测程序代码进行相似度比较,如果结果都大于某一阈值,那么就将该待检测程序代码纳入到该簇当中。如果比对结果与现有的簇中待检测程序代码的相似度值比较小,则将该待检测程序代码归为一个新簇。④重复以上步骤,直到待检测程序代码集合中的所有待检测程序代码比对完毕。通过上面的聚类分析,可以将待检测程序代码集合分成若干个簇,每个簇代表一个分类即抄袭集群。

本实施例中,对待检测程序代码集合中的各待检测程序代码进行聚类后,还基于预设的相似度阈值,确定聚类后的各类待检测程序代码中的源头待检测程序代码。

具体的,根据检测得到的抄袭集群,还可以分析出每个抄袭集群的抄袭源,即该抄袭集群的“源头”代码。

假设一个簇中,P1为“源头”代码,而P2、P3抄袭了P1的程序代码。这时这3个源程序间的相似度值可能为:Sim(P1,P2)>a%,Sim(P1,P3)>a%,Sim(P2,P3)

S15:根据聚类结果生成检测报告。

本实施例中,根据聚类结果,采用HTML文件并运用jQuery EasyUI提供的前台开源的轻量级框架来展示检测报告,生成对应的可视化检测报告,生成的检测报告中显示的内容包括:待检测程序代码集合中各待检测程序代码的相似度结果、检测到的抄袭代码的行数、左右组合下拉框对比显示用不同的颜色标识的抄袭部分等信息。

本实施例中的程序代码抄袭检测方法,包括:将待检测程序代码集合中各待检测程序代码转换为XML文本。根据各待检测程序代码对应的XML文本,计算各待检测程序代码的相似值。提取各待检测程序代码的特征属性,根据各待检测程序代码对应的XML文本的相似值,及各待检测程序代码的特征属性,对待检测程序代码集合中的各待检测程序代码进行聚类,根据聚类结果生成检测报告。由于本实施例中,在得到各待检测程序代码对应的XML文本的相似值后,还对待检测程序代码集合中的各待检测程序代码进行聚类,从而可以对抄袭集群进行分类显示,进而方便找出抄袭的“源头”代码。

一种程序代码抄袭检测设备,参照图2,包括:

处理器21和存储器22;

处理器21与存储器22通过通信总线相连接:

其中,处理器21,用于调用并执行存储器22中存储的程序;

存储器22,用于存储程序,程序至少用于执行如以上任一实施例中的一种程序代码抄袭检测方法。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号