per*_*eal 6 c++ refactoring plagiarism-detection
我有几个简单的C++家庭作业,我知道学生共享代码.这些都是聪明的学生,他们知道如何欺骗苔藓.我正在寻找一个可以根据类型重命名变量的工具(int类型的第一个变量将是int1,第一个int数组将是intptr1 ...),或者做类似我现在想不到的事情.你知道一个快速的方法吗?
编辑:我需要使用苔藓并报告90%匹配
谢谢
是的,您正在寻找的工具称为编译器。:)
说真的,如果提交的程序除了标识符名称之外完全相同,那么编译(没有调试信息)应该会产生完全相同的输出。
如果在打开调试的情况下执行此操作,编译器可能会在可执行文件中留下每个可执行文件都不同的元数据,因此有关确保其关闭的注释。这也是为什么这对 Java 程序不起作用——无论是否处于调试模式(出于动态内省的目的),这种信息都会存在。
编辑:我从添加到问题中的评论中看到,您观察到的一些提交内容不仅在标识符名称方面有所不同。如果程序在结构上仍然相同,那么这应该仍然有效。
编辑:鉴于需要使用苔藓,这可能不是可行的方法。我确实认为 moss 对比较汇编有一些支持 - 也许编译到汇编器并将其提交给 moss 是一个选项(取决于您使用的编译器)。