类似的代码检测器

Let*_*_Be 16 c c++ copy-paste detection plagiarism-detection

我正在寻找一种可以比较相似源代码的工具.

我们现在有一个非常微不足道的系统,它有大量的误报,真正的积极因素很容易被埋没在其中.

我的要求是:

  • 相当少量的误报
  • 良好的检测率(是的,这些是相互对立的)
  • 理想情况下,输出比单个值更复杂
  • 可用于C(C99)和C++(C++ 03和最佳C++ 11)
  • 仍然保持
  • 可用于将两个源文件相互比较
  • 可用于非交互模式

编辑:

为避免混淆,以下两个代码段是相同的,应该如下检测:

for (int i = 0; i < 10; i++) { bla; }

int i; while (i < 10) { bla; i++; }

和这里一样:

int x = 10; y = x + 5;

int a = 10; y = a + 5;

Thr*_*986 18

我过去使用过MOSS:http://theory.stanford.edu/~aiken/moss/来检测剽窃代码.由于它在语义级别上工作,因此它将检测您在上面呈现的情况.该工具具有语言感知能力,因此在分析中不考虑注释,并且在检测通过简单搜索和替换变量和/或函数名称而修改的代码方面有很长的路要走.

注意:几年前,当我在研究生院教授计算机科学时,我使用了这个工具,并且它在检测从互联网上拔出的代码时非常有效.以下是类似应用程序的详细记录:http://fie2012.org/sites/fie2012.org/history/fie99/papers/1110.pdf

如果你谷歌"测量软件相似性",你应该找到一些更有用的点击:http: //www.ics.heacademy.ac.uk/resources/assessment/plagiarism/detectiontools_sourcecode.html


Yav*_*var 6

您在计算机科学术语中的问题可能被称为源代码抄袭检测.一个好的开始是阅读关于Dobbs博士的这篇文章:检测源代码抄袭.它列出了源代码中用于检测抄袭的算法.

注意:您所要求的确实是一个棘手的计算问题:)