跳到主要内容

ZeroTell Pro 为自动续费订阅,可按周、按月或按年计费。可随时在“控制台 → 订阅”中取消。查看方案和价格。

为学生、写作者和研究人员打造

代码查重工具 ZeroTell 出品 · 改了变量名也藏不住

粘贴或上传多份代码,获得相似度矩阵,并排高亮显示匹配的代码行;也可以把单个文件与网上公开的代码进行比对。

添加 2–10 份代码。名称、空白和注释都会被忽略,改名后的副本照样能匹配。

每个框至少需要 3 行代码

相似度报告

报告会显示在这里:相似度矩阵、最相似的代码对及其并排显示的匹配行,或包含你代码的网页。

代码查重工具如何运作

  1. 代码标准化

    去掉注释和空白,并把所有变量名、函数名、数字和字符串替换为占位符,因此改名和调整格式都不会影响结果。

  2. 为每个文件生成指纹

    对相互重叠的 8 个词元序列做哈希,再通过 winnowing 步骤保留代表性样本——这正是知名的 MOSS 系统背后的方法。

  3. 两两对比

    两份代码共有指纹所占的比例即为它们的相似度,最多 10 个文件以矩阵形式展示。

  4. 查看匹配的代码行

    选择一对代码,即可并排查看两个文件,匹配区域会高亮显示。

两种检查方式

  • 对比多份代码

    把全班作业或一批居家完成的编程任务互相比对。完全在我们的服务器上运行,不依赖任何第三方服务。

  • 网络搜索

    将单个文件中最多 12 行最具特征的代码作为精确短语搜索,只列出真正包含这些代码的网页。

  • 并排视图

    匹配的代码行在两个文件中都会高亮并标注行号,哪些是复制的、哪些改过一目了然。

  • 实事求是的数字

    相似度是共有指纹的占比,网络得分是被搜索的代码行中在网上找到的占比。不做任何外推。

谁在使用

  • 编程课教师

    即使变量名被改过,也能找出结构相同的作业对。

  • 助教

    把一大批作业缩小到少数几对值得细看的代码。

  • 学生

    提交前确认改编自教程的代码已经注明出处。

  • 技术主管

    上线前看看某段代码是否出现在公开代码库或论坛中。

常见问题

不能。生成指纹前会去掉名称、字面量、注释和空白,所以把每个变量都改名的副本,得分与原样复制相同。整体调换函数顺序只会让得分略微降低,因为匹配是按区域逐段查找的。

每份代码都会被简化为一组 8 词元序列的指纹。相似度是两组指纹的重合度(共有指纹数除以两组的平均大小),报告还会说明每个文件被覆盖的比例。

不能单凭得分下结论。起始代码、作业模板、标准算法和很短的练习本来就会重合。下结论前,请先阅读高亮的代码行,并与相关人员沟通。

将文件中最多 12 行特征代码作为精确短语在公开网络上搜索。它不会搜索私有代码库或其他用户提交的代码,所以搜索无结果并不能证明代码是原创的。

Pro 方案*不消耗积分(*合理使用:每次对比或网络搜索计为一次,每天最多 300 次;网络搜索还会将其搜索次数计入每天 1,000 次的网络搜索额度)。没有方案时,对比 2–10 份代码消耗 1 积分,网络搜索消耗 2 积分。两者都需要 ZeroTell 账户。

不会。代码在内存中对比后即被丢弃。在网络搜索模式下,选中的代码行会发送给我们的搜索服务商来执行搜索。

找出值得细看的代码对

粘贴两份或更多代码,看看它们有哪些相同之处。

对比代码