为学生、写作者和研究人员打造
代码查重工具 ZeroTell 出品 · 改了变量名也藏不住
粘贴或上传多份代码,获得相似度矩阵,并排高亮显示匹配的代码行;也可以把单个文件与网上公开的代码进行比对。
相似度报告
报告会显示在这里:相似度矩阵、最相似的代码对及其并排显示的匹配行,或包含你代码的网页。
代码查重工具如何运作
代码标准化
去掉注释和空白,并把所有变量名、函数名、数字和字符串替换为占位符,因此改名和调整格式都不会影响结果。
为每个文件生成指纹
对相互重叠的 8 个词元序列做哈希,再通过 winnowing 步骤保留代表性样本——这正是知名的 MOSS 系统背后的方法。
两两对比
两份代码共有指纹所占的比例即为它们的相似度,最多 10 个文件以矩阵形式展示。
查看匹配的代码行
选择一对代码,即可并排查看两个文件,匹配区域会高亮显示。
两种检查方式
谁在使用
编程课教师
即使变量名被改过,也能找出结构相同的作业对。
助教
把一大批作业缩小到少数几对值得细看的代码。
学生
提交前确认改编自教程的代码已经注明出处。
技术主管
上线前看看某段代码是否出现在公开代码库或论坛中。
常见问题
不能。生成指纹前会去掉名称、字面量、注释和空白,所以把每个变量都改名的副本,得分与原样复制相同。整体调换函数顺序只会让得分略微降低,因为匹配是按区域逐段查找的。
每份代码都会被简化为一组 8 词元序列的指纹。相似度是两组指纹的重合度(共有指纹数除以两组的平均大小),报告还会说明每个文件被覆盖的比例。
不能单凭得分下结论。起始代码、作业模板、标准算法和很短的练习本来就会重合。下结论前,请先阅读高亮的代码行,并与相关人员沟通。
将文件中最多 12 行特征代码作为精确短语在公开网络上搜索。它不会搜索私有代码库或其他用户提交的代码,所以搜索无结果并不能证明代码是原创的。
Pro 方案*不消耗积分(*合理使用:每次对比或网络搜索计为一次,每天最多 300 次;网络搜索还会将其搜索次数计入每天 1,000 次的网络搜索额度)。没有方案时,对比 2–10 份代码消耗 1 积分,网络搜索消耗 2 积分。两者都需要 ZeroTell 账户。
不会。代码在内存中对比后即被丢弃。在网络搜索模式下,选中的代码行会发送给我们的搜索服务商来执行搜索。