用于扫描 ruby 个代码文件以查找重复或类似代码块的工具

tool to scan ruby code files for repeating or similar code chunks

有没有办法扫描 ruby 文件中的重复代码?

我有近 30 个文件,每个文件的代码行数在 200-1000 行之间,我需要优化和重构它们。

我正在考虑将重复的代码移至可用于所有文件的实用程序 class。

是否有某种扫描工具可以轻松查找和标记重复或相似代码块?

还是我必须硬着头皮手工完成?

你可以看看flayhttps://github.com/seattlerb/flay 来自文档:

Flay analyzes code for structural similarities. Differences in literal values, variable, class, method names, whitespace, programming style, braces vs do/end, etc are all ignored. Making this totally rad.

或者,根据您的预算,您可以使用其中一种托管静态代码分析服务创建一个帐户,然后将您的代码推送到那里进行检查。

我们的 CloneDR 工具可以做到这一点;我们刚刚完成 Ruby 的一项。它会寻找与一组约束匹配的重复代码(大小、# 变化点、匹配的相似性 part/total 等)。

这里是针对大多数 Metasploit 代码库的 CloneDR 运行 示例。 这大约是 Ruby 代码的 460K SLOC; (至少)14% 的代码库是克隆的。

下图第一张是总结页。第二个是检测到的克隆示例(在该代码库中发现的大约 3000 个中的一个);您可能想在浏览器中单击此图片并使用“+”按钮将其放大一点以便于查看。