我想写一段代码,可以找到代码文件之间的相似性(可能是通过百分比找到相似性,或者至少“猜测”哪些文件可能被复制),我对30个文件运行它,每个文件最多500行。我想识别重复的文件(或疑似重复的文件)。
我遇到了几个问题:
这两个问题我想我可以通过从代码中删除所有的空格、换行符和注释来解决,但是我遇到了以下问题
对于试图“隐藏”相似性的
的示例
代码1:
void main()
{
int x;
int y;
scanf("%d", &x);
switch(x)
{
case 1:
//some code
break;
case 2:
//some code
break;
}
}
代码2:
#define ONE 1
#define TWO 2
void main()
{
int a, b;
scanf("%d", &a);
switch(a)
{
case ONE:
//some code
break;
case TWO:
//some code
break;
}
}
我愿意提供任何帮助(可能是使用现有的工具,也可能是通过建议算法)
谢谢。
发布于 2017-12-25 11:26:52
您可能会对MOSS感兴趣,这是斯坦福大学开发的一个系统,它试图准确地解决您的问题。
但是,如果你对开发自己的方法很好奇,这里有一些想法来解决你到目前为止提到的问题:
https://stackoverflow.com/questions/47965008
复制相似问题