Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于扫描ruby代码文件中重复或类似代码块的工具_Ruby_Dry - Fatal编程技术网

用于扫描ruby代码文件中重复或类似代码块的工具

用于扫描ruby代码文件中重复或类似代码块的工具,ruby,dry,Ruby,Dry,有没有一种方法可以扫描ruby文件中的重复代码 我有将近30个文件,每个文件有200-1000行代码,我需要对它们进行优化和重构 我正在考虑将重复的代码移动到一个可以跨所有文件使用的实用程序类 是否有某种扫描工具可以轻松地查找和标记重复或类似代码块 还是我必须咬紧牙关,用手去做呢?你可以看看弗莱: 从文档中: Flay分析代码的结构相似性。字面上的差异 值、变量、类、方法名、空格、编程样式、, 大括号vs do/end等都被忽略。让这一切都变得很疯狂 或者,根据您的预算,您可以使用托管的静态代码

有没有一种方法可以扫描ruby文件中的重复代码

我有将近30个文件,每个文件有200-1000行代码,我需要对它们进行优化和重构

我正在考虑将重复的代码移动到一个可以跨所有文件使用的实用程序类

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

还是我必须咬紧牙关,用手去做呢?

你可以看看弗莱: 从文档中:

Flay分析代码的结构相似性。字面上的差异 值、变量、类、方法名、空格、编程样式、, 大括号vs do/end等都被忽略。让这一切都变得很疯狂

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

我们的工具可以做到这一点;我们刚刚为Ruby完成了一个。它搜索匹配一组约束条件的重复代码(大小、变化点、匹配部分/总数的相似性等)

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

下面的第一张图片是摘要页面。第二个是示例检测到的克隆(该代码库中约3000个克隆中的一个);您可能希望在浏览器中单击此图片,并使用“+”按钮将其放大一点,使其更易于查看


您能在这里把您的要求缩小一点吗?一个具体的例子来说明你正在努力寻找的东西会有所帮助。代码是否因缩进而不同?通过变量名?手动操作通常是最可靠的方法,自动检测只捕获复制粘贴作业。Ruby的“不要重复你自己”方法涉及到对代码进行仔细的分析,并将代码简化为它的基本要素。方法基本上是相同的,或者是重复代码的延伸之类的。难道没有像rubocop这样的代码工具来帮助干涸代码吗?绝对有像和rubocop这样的工具。如果您有大量重复的代码,听起来您的开发过程完全是无政府状态的。当我不是做编码的人时,这些是如何通过代码审查的。它似乎是由一个真正的初级开发人员以草率的方式编写的。在修复了一些bug并添加了一些功能之后,我的下一个任务是开始优化作业脚本,因此我想知道文件中重复了多少,这样我就可以通过将其集中到一个实用程序类中来消除它。我的第一个想法是“为什么亲爱的上帝,为什么?”。尽管如此,它确实有效。您需要澄清“重复代码”的含义。如果一个文件在两个位置包含行
“x=3”
,这是重复代码吗?如果两个文件都包含行
“x=3”
,这是重复代码吗?你考虑过重写代码吗?从长远来看,修补蹩脚的代码可能会浪费大量时间。太棒了!谢谢,先生,请吃一块饼干!顺便说一句,我将在这些脚本上运行flog,看看代码到底有多痛苦。如果您想查看更多静态代码检查,请查看以下列表中的:flay、flog、reek、rubocop等等:或者只查看结合了各种度量的MetricFu。谢谢你的饼干:-)太好了!在寻找要重新考虑的代码时,应该非常有用。