Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 相似码检测器_C++_C_Detection_Copy Paste_Plagiarism Detection - Fatal编程技术网

C++ 相似码检测器

C++ 相似码检测器,c++,c,detection,copy-paste,plagiarism-detection,C++,C,Detection,Copy Paste,Plagiarism Detection,我正在寻找一个可以比较源代码相似性的工具 我们现在有一个非常简单的系统,它有大量的误报,而真正的误报很容易被隐藏在其中 我的要求是: 相当少量的误报 良好的检测率(是的,它们相互矛盾) 理想情况下,输出比单个值更复杂 可用于C(C99)和C++(C++ 03,最佳C++ 11)< /LI> 仍然保持 可用于将两个源文件相互比较 在非交互模式下可用 编辑: 为避免混淆,以下两个代码段是相同的,应按此进行检测: for(inti=0;i

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

我们现在有一个非常简单的系统,它有大量的误报,而真正的误报很容易被隐藏在其中

我的要求是:

  • 相当少量的误报
  • 良好的检测率(是的,它们相互矛盾)
  • 理想情况下,输出比单个值更复杂
  • 可用于C(C99)和C++(C++ 03,最佳C++ 11)< /LI>
  • 仍然保持
  • 可用于将两个源文件相互比较
  • 在非交互模式下可用
编辑:

为避免混淆,以下两个代码段是相同的,应按此进行检测:

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

inti;而(i<10){bla;i++;}

这里也一样:

intx=10;y=x+5


inta=10;y=a+5

可能是复制粘贴检测器?

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


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

我过去使用过MOSS:检测剽窃代码。因为它是在语义级别上工作的,所以它将检测您上面介绍的情况。该工具具有语言意识,因此在分析中不考虑注释,并且它可以通过简单的搜索和替换变量和/或函数名来检测已修改的代码

注意:几年前我在研究生院教计算机科学时使用了这个工具,它在检测从互联网上被删除的代码方面工作得非常出色。以下是关于类似应用的详细记录:

如果你在谷歌上搜索“衡量软件相似性”,你会发现一些更有用的点击: 你可以试试。它会找到共同点。它有一些忽略空白更改的能力,但不检测带有重命名变量的代码,因此在检测剽窃时,它更多的是一种清理帮助,而不是帮助。

我开始使用JPLAG()检查代码相似性,并比较学生在Java和文本文件中的作品。 它可以很好地检查相同的代码结构和变量替换

(回复很晚,但问题的相关性从未消失)

我遇到了类似的问题,并编写了一个基于web的应用程序

我教的是javascript和python,所以这些都是它处理的语言。它不处理C/C++(当前)。我很想看看Javascript解释器如何处理C


我面临的问题是,跨越国际边界提交学生代码是非法的(MOSS是被禁止的),因此需要一些本地运行的代码。实现是纯客户端浏览器

有趣的是,我认为它可能以一种独特的方式满足您的“低假阳性”标准。任务之间总是有一些相似之处,但使用一种独特的技术来确定“开始看起来可疑”的要点

我发现它在确定课堂上的群体动态(谁与谁一起工作/学习)方面更有用

它有一些有趣的实时图形,所以在本科生提交第一份作业后,向他们展示这些图形非常有用。在第一次作业中总是有高度的相似性,因此现场演示(匿名提交名称)并没有坏处

我总是讲那个我认为(非常明显地)作弊的学生的故事。他们的工作与另一个学生的非常独特的答案极为相似。将学生的作业与班上其他同学进行比较,结果显示,与班上其他同学相比,学生的作业没有显著的相似性。这远远低于“有趣”的门槛。这导致了对提交文件的深入调查。。。结果是有一个教程,风格展示了出来,但作品是独一无二的


什么都没发生,那些学生也没发现他们有多接近。

diff能满足你的一些需求吗?@HighPerformanceMark LOL,不,不能。看起来你想要一个工具来比较两个代码的语义相似性,而不是语法相似性。我怀疑这是一个尚未解决的问题,因此很难为您找到满意的解决方案。我认为,正如我写的那样,你最初的问题会误导很多读者,就像它误导了我一样。我还认为你应该完全重写它,清楚地说明你对什么样的比较感兴趣。莫斯呢?看来fie1012.org的链接不再有效。你能提供一个替代链接吗?