java - 在Python中比较两个java文件的相似度

标签 java python

我希望能够相互比较多个文件(最多 30 个),以便找到某种程度的相似性。它不需要是完美的,如果两个文件异常相似,我只想要某种危险信号。解决这个问题的好方法是什么?

最佳答案

您可以使用正则表达式(通常称为正则表达式: python regex docs )。使用分组,您可以找到变量和函数名称、唯一的代码行(不是空格或注释的行)等。

但是,创建一个足够智能、能够自行检测相似性的系统可能非常困难。如果您有某种方法获取两个文件的 0 到 1 之间的数字及其相似性,则可以根据高阈值对其进行测试。任何超过阈值(例如 0.97)的值都可能被视为可疑。

除了查看物理代码之外,您还可以观察文件中的代码密度。想象一下,如果您打印出一页代码并将其旋转 90 度。您基本上会得到每个文件的行数图表。使用它,您可以观察哪里有峰和谷,以了解代码在哪里或多或少密集。两个相似的文件可能具有相同或非常接近的代码密度。此外,使用这种方法,您不必担心寻找相同的变量或函数名称,因为您不太关注代码本身,而是关注它的组织方式

关于java - 在Python中比较两个java文件的相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601202/

相关文章:

python - 如何更新 python pandas 中的交叉表值

python - 如何使用 KFileDialog 选择多个目录?

java - 无论构造函数签名如何,模拟类的属性

java - QR 码显示为空白

java - 无法从静态方法返回修改后的字符串

python - mysql中如何查询数据库中条件是否存在?

python - 在 OSX Lion 10.7.3 上安装 pyUSB 0.4.3

python - Azure SDK中是否有一个python类来保留实例的公共(public)IP地址?

java - 使用公共(public)IP启动ec2实例

java - 如何在mockito的单元测试中传递函数中的任何UUID?