代码查重方法

代码查重方法
    一、 代码查重方法
    代码查重,其实就是对源代码进行两两比对,发现重复率到了一定的阈值以上,就可以认定为抄袭。目前代码查重可以应用到学术作品(论文,计算机程序等),代码复现验证,成绩评估等。
    代码查重有多种方式,如常见的 hash 值法,编辑距离法,结构化程序分析法,规则匹配法,文法分析法,特征向量法等。
    1. Hash 值法
    把每一段代码都算出一个 hash 值(比如 MD5, SHA-1 等),然后将代码两两比较,比较 hash 值的差异。如果 hash 值相同,那么这两段代码很可能是一样的;如果 hash 值不同,则说明代码不一样。
    这种方法比较快,但是很容易出现误判,因为 hash 值有可能即使代码不一样,也会有相
同的 hash 值,导致误判为相同代码;另外 hash 值有可能会因为改动一些没有影响代码实际功能的东西(比如空格之类的)而发生变化,也可能导致误判。
代码转换    2. 编辑距离法
    编辑距离法是在字符串比较中应用的经典算法,其原理是把一个字符串转换成另一个字符串所需要的最少操作次数。可以将代码拆分成一个个字符,然后按照编辑距离算法进行比较,计算出相似度最大的以作为抄袭的比较结果。
    3. 结构化程序分析法
    结构化程序分析法指的是将代码的结构作为分析的依据,而不是简单的比较字符串,去寻代码间的相似度。根据代码的语言特征来把原始代码转换成抽象语法树,然后比较两棵抽象语法树,计算其相似度,来判断是否有抄袭现象。
    4. 规则匹配法
    规则匹配法指的是把代码映射成一项“规则”,然后根据规则与其它程序进行比较,判断是否相同。
    5. 文法分析法
    文法分析法是指将代码解析成文法组成单元,再去比较文法组成单元之间的相似度,从而判断源代码之间是否存在重复。
    6. 特征向量法
    特征向量法是把代码映射成一个特征向量,然后计算两个特征向量之间的距离,比较其大小,来判断彼此之间是否存在重复现象。

本文发布于:2024-09-23 07:24:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/378234.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   判断   距离   进行   分析法   是否   规则
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议