源代码的距离度量

机器算法验证 文本挖掘 距离 距离函数
2022-04-03 09:56:22

我正在尝试比较来自多个 github 项目的源代码,特别是我正在寻找包含来自其他存储库的大块代码或带有小修改的大块(例如,变量或函数名称更改,或从一个值到另一个值的常数)。

有没有特别适合源代码分析的距离度量?

2个回答

您可以查看以下两个链接:

代码相似度分析器的比较

在大规模代码语料库中测量代码相似度

在下面的第三个链接中,提出了一种相似性度量,该度量考虑了两个序列之间共享信息的数量。该指标基于 Kolmogorov 复杂性,已应用于测量两个计算机程序之间的共享信息量,以实现剽窃检测。

共享信息和程序抄袭检测

一种使用潜在语义分析的源代码抄袭检测和调查方法报告了在这种类型的任务中的成功,其一般过程如下:

  • 构建源代码语料库的词频表示
  • 使用 LSA 进行降维(他们发现 30 维就足够了)
  • 计算查询文档与语料库文档的余弦相似度

也许与使用自然语言处理所做的没有太大区别,但他们确实使用这种方法报告了相当令人信服的结果。