查看: 22729| 回复: 12
跳转到指定楼层
上一主题 下一主题
收起左侧

从技术上讲讲为什么大家在代码抄袭这个问题上千万不要心存侥幸...

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 hello_ 于 2018-3-4 11:26 编辑

最近两天地里很多讨论MOSS的,很多人提到了网上找个代码,改了改就当自己的交了。但是我想说的是,在这个问题上,千万不要心存侥幸,因为现在的代码查重系统已经非常智能,我们一般能想到的小技巧,他们都能找出来...
一般的查抄袭系统(不局限于MOSS,实际上斯坦福的MOSS怎么实现的,我也没找到),都会走有两个步骤,第一步是把代码转换成Abstract Syntax Tree(AST),第二步是从AST出发去判断代码结构上的相似性。MOSS网页上列出的Winnowing那篇paper主要讲的是第二步,给出了一个查相似度的方法,有兴趣可以看看,我这里讨论一下第一步,讲讲为什么很多所谓的小技巧在这样的系统面前毫无意义。讲两个很多人都用过的小技巧,调整代码的位置,以及改变循环的结构。
. .и
代码在经过parser之后会被翻译成Abstract Syntax Tree,这时候,你所做“改变循环的结构”有没有效果就完全依赖于AST是怎么定义的了。很多编译器里面对于循环只保留一种结构,比如只保留while,对于其他的do() while{}和for() 都会被翻译成while。前面有人提到MOSS查不出来for和while的重复,我印象中这个跟语言相关,也许有的语言查不出来,有的能查出来,取决于那个语言的parser了。
. 1point 3acres
调整代码的位置这个,一般取决于查重系统的设计有多丧心病狂。一般在第一步里面翻译成AST之后都会继续把AST转换成某种normal form,比如variable renaming, 再比如compound statement转换成simple statement,以及更丧心病狂的骚操作,像是根据交换律结合律和其他的语法规则,重新排序。简单来讲,(2+1)*3 会被拆分成 2*3+1*3,然后排序成1*3+2*3。当代码被翻译成某种normal form之后,就可以跑Winnowing那篇paper里的similarity detection来找相似度了...

根据我当了5年TA的经验,怎么解读MOSS的结果其实很tricky,我们原来的要求30%以上的需要肉眼判断有没有抄袭,但是很多时候最后还是没有办法实锤。
. 1point3acres.com
码了这么多字,走过路过赏点大米了...



评分

参与人数 18大米 +88 收起 理由
Javic + 10 给你点个赞!
睿智的草 + 5 wow膜拜大牛
xqqyyy + 5 给你点个赞!
窗边的猫猫 + 3 很有用的信息!
EasonBai + 2 很有用的信息!

查看全部评分


上一篇:MOSS系统详解 - 你为什么不要撒谎
下一篇:目标是留美工作,已经拿到Ph.D全奖Offer,还有必要申请公派吗?
推荐
sdq1688 2018-3-4 13:16:33 | 只看该作者
全局:
本帖最后由 ianhezy 于 2018-3-4 13:39 编辑

说实话。。现在MOSS任何人都可以拥有一个了,不再restrict to professor了,为什么大家不下一个自己玩呢。。(并且开源,可以下载到各种不同版本的MOSS玩。。) <- 好像并没有,可能层主脑子坏了
回复

使用道具 举报

推荐
starlure 2018-3-4 15:21:00 | 只看该作者
全局:
MOSS是开源了呀,引自他们的网站:"Moss is being provided in the hope that it will benefit the educational community. Moss is fast, easy to use, and free. In the past, access has been restricted to instructors and staff of programming courses. This is no longer the case, and anyone may obtain a Moss account." 给他们一个邮箱发个邮件就能要到账号了
回复

使用道具 举报

全局:
我认识的一个先我一学期上object-oriented的印度小哥亲口跟我说他在网上抄代码,没被发现。。。我当时就很好奇查重系统会不会只是摆设-baidu 1point3acres
我为此还专门问了TA(当然没说我朋友是谁)为什么会这样。。TA表示对查重系统很自信。。。但是我那个印度朋友的编程能力真的不太好
(我所有的code都是在office hour自己写的嗯
回复

使用道具 举报

🔗
Variable 2018-3-4 11:59:13 | 只看该作者
全局:
有没有一种情况就是如果AST翻译的太复杂 然后所有功能相同的代码的normal form都完全一样?不管是不是相同的思路写出来的 只是目的一样的代码
回复

使用道具 举报

🔗
 楼主| hello_ 2018-3-4 12:08:34 | 只看该作者
全局:
Variable 发表于 2018-3-4 11:59
有没有一种情况就是如果AST翻译的太复杂 然后所有功能相同的代码的normal form都完全一样?不管是不是相同 ...

会有。这就看AST的normalization做到什么程度了,做太多肯定是不行的,全班的代码最后都变一样了。
回复

使用道具 举报

🔗
 楼主| hello_ 2018-3-4 13:28:06 | 只看该作者
全局:
ianhezy 发表于 2018-3-4 13:16
说实话。。现在MOSS任何人都可以拥有一个了,不再restrict to professor了,为什么大家不下一个自己玩呢。 ...
..
已经开源了吗?求个链接
回复

使用道具 举报

🔗
sdq1688 2018-3-4 13:40:11 | 只看该作者
全局:
hello_ 发表于 2018-3-4 13:28. Χ
已经开源了吗?求个链接

刚刚跑去看了眼,好像并没有,可能层主脑子坏了,记忆出现了偏差。。。。
回复

使用道具 举报

🔗
 楼主| hello_ 2018-3-4 23:51:50 | 只看该作者
全局:
starlure 发表于 2018-3-4 15:21. Waral dи,
MOSS是开源了呀,引自他们的网站:&quot;Moss is being provided in the hope that it will benefit the educati ...

人家这是给你用吧……代码没有开源吧……
回复

使用道具 举报

🔗
pkk5488 2018-3-5 01:29:26 | 只看该作者
全局:
感觉很有用的信息
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

>
快速回复 返回顶部 返回列表