admin 管理员组文章数量: 1087139
2024年4月14日发(作者:目前bootstrap使用最为广泛的版本?)
代码查重方法
一、 代码查重方法
代码查重,其实就是对源代码进行两两比对,发现重复率到了一
定的阈值以上,就可以认定为抄袭。目前代码查重可以应用到学术作
品(论文,计算机程序等),代码复现验证,成绩评估等。
代码查重有多种方式,如常见的 hash 值法,编辑距离法,结构
化程序分析法,规则匹配法,文法分析法,特征向量法等。
1. Hash 值法
把每一段代码都算出一个 hash 值(比如 MD5, SHA-1 等),然
后将代码两两比较,比较 hash 值的差异。如果 hash 值相同,那么
这两段代码很可能是一样的;如果 hash 值不同,则说明代码不一样。
这种方法比较快,但是很容易出现误判,因为 hash 值有可能即
使代码不一样,也会有相同的 hash 值,导致误判为相同代码;另外
hash 值有可能会因为改动一些没有影响代码实际功能的东西(比如
空格之类的)而发生变化,也可能导致误判。
2. 编辑距离法
编辑距离法是在字符串比较中应用的经典算法,其原理是把一个
字符串转换成另一个字符串所需要的最少操作次数。可以将代码拆分
成一个个字符,然后按照编辑距离算法进行比较,计算出相似度最大
的以作为抄袭的比较结果。
3. 结构化程序分析法
结构化程序分析法指的是将代码的结构作为分析的依据,而不是
- 1 -
简单的比较字符串,去寻找代码间的相似度。根据代码的语言特征来
把原始代码转换成抽象语法树,然后比较两棵抽象语法树,计算其相
似度,来判断是否有抄袭现象。
4. 规则匹配法
规则匹配法指的是把代码映射成一项“规则”,然后根据规则与
其它程序进行比较,判断是否相同。
5. 文法分析法
文法分析法是指将代码解析成文法组成单元,再去比较文法组成
单元之间的相似度,从而判断源代码之间是否存在重复。
6. 特征向量法
特征向量法是把代码映射成一个特征向量,然后计算两个特征向
量之间的距离,比较其大小,来判断彼此之间是否存在重复现象。
- 2 -
版权声明:本文标题:代码查重方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1713101903a619944.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论