有没有方法扫描红宝石文件的重复代码?
我有将近30个文件之间的200-1000行代码,我需要优化和重构他们。
我正在考虑将重复的代码移到一个可以跨所有文件使用的实用程序类中。
是否有某种扫描工具可以方便地查找和标记重复或类似代码块?
还是我必须咬紧牙关,用手来做呢?
发布于 2016-06-01 20:19:27
您可以从文档中查看flay:https://github.com/seattlerb/flay:
Flay分析代码的结构相似性。在文字值、变量、类、方法名称、空格、编程风格、大括号和do/end等方面的差异都被忽略。把这个做得太棒了。
或者,根据您的预算,您可以使用托管的静态代码分析服务之一创建一个帐户,并将您的代码推到那里进行检查。
发布于 2016-06-02 23:06:12
我们的CloneDR工具可以做到这一点;我们只是完成了一个Ruby。它寻找与一组约束相匹配的重复代码(关于大小、#变异点、匹配部分/总数的相似性等)。
下面是针对大多数Metasploit代码库运行的CloneDR示例。这是大约460 K的Ruby代码的SLOC;(至少) 14%的代码库是克隆的。
下面的第一张图片是摘要页。第二个例子是检测到的克隆(在该代码库中发现的大约3000个克隆之一);您可能希望在浏览器中单击这张图片,并使用"+“按钮使其更大一些,更容易看到。
https://stackoverflow.com/questions/37574455
复制相似问题