我希望能够相互比较多个文件(最多 30 个),以便找到某种程度的相似性。它不需要是完美的,如果两个文件异常相似,我只想要某种危险信号。解决这个问题的好方法是什么?
最佳答案
您可以使用正则表达式(通常称为正则表达式: python regex docs )。使用分组,您可以找到变量和函数名称、唯一的代码行(不是空格或注释的行)等。
但是,创建一个足够智能、能够自行检测相似性的系统可能非常困难。如果您有某种方法获取两个文件的 0 到 1 之间的数字及其相似性,则可以根据高阈值对其进行测试。任何超过阈值(例如 0.97)的值都可能被视为可疑。
除了查看物理代码之外,您还可以观察文件中的代码密度。想象一下,如果您打印出一页代码并将其旋转 90 度。您基本上会得到每个文件的行数图表。使用它,您可以观察哪里有峰和谷,以了解代码在哪里或多或少密集。两个相似的文件可能具有相同或非常接近的代码密度。此外,使用这种方法,您不必担心寻找相同的变量或函数名称,因为您不太关注代码本身,而是关注它的组织方式
关于java - 在Python中比较两个java文件的相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601202/