欢迎分享,转载请注明来源:内存溢出
MOSS是一种自动化的检测程序代码相似性的工具,由Stanford大学的一个研究小组开发。它可以检测出潜在的抄袭行为,并可以检测出多种编程仿册语言的代码相似性。它可以检测出程序中的相似性,而且可以比较不同的程序语言,如C,C++,Java,Python等。MOSS可以帮助教师和学生发现抄袭行为,以及检查学生作业的真实性,以确保存在一个公平的备薯宏手逗学习环境。问题里既然说是代码了,那就可以看到源码了?(我默认)最简单的就是diff一下啦,对策可以改改代码风格,排旦纤版,变量命名,甚至插曲一些无用代码等等。这些只是看起来不同了。另外几位大神的答案,似乎忽略了程序运行时的状况呢,如果程序本身逻辑没变,只是文本和语法上做些处理(忽略lisp之类的奇葩),程序运行起来之后,比较调用堆栈的变化,这种方法很容易识破。你说运行起来比较难的话,那就忽略了测试人员的作用了,把程序/代码段/模块 当成黑盒,通过mock等方式,还是可以一部分一部分搞的。那改变调用层次,函数套函数?甚至某些地方变成宏?模块重构?诸如此类。这就不好识别了。模块都给重构了的话,姑且不算抄了,但是设计上一样的,人工code review,去了解它的设计,还是能识破。首先可以diff一下,然后看运行状态,如谨穗果是差别很大的,看设计,做code review,看文档,如果自己的代码特别多,而人家的祥迟卜代码又拿不到,可以在自己的代码里加些【水印】,比如搞些magic number,运行时去调试,就找这个magic number,有的话,基本就是盗的。计算的话,我觉得评级比较靠谱,列规则,挨个检测,根据规则中q程度评级,完全量化的方法应该很难做到,但是规则+评级 可以糙快猛的构造出一个比较相似度的系统,工程思维哈,不断根据实践,去调整这个系统,让它更接近准确就可以啦~我说的都是土方法,期待学术大神给个系统答案。
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
用C语言编写一个石头剪子布游戏,具体要求如下,高分急求
上一篇
2023-05-25
ipad如何设置隐藏应用程序?
下一篇
2023-05-25
评论列表(0条)