Ruby 的自动代码质量工具?

Ruby 的自动代码质量工具?

Automatic code quality tool for Ruby?

我真正怀念 Java 的一件事是工具支持。 FindBugs、Checkstyle 和 PMD 实现了代码质量指标和自动错误检查的三位一体。

是否有任何东西可以检查简单的错误和/或 Ruby 代码的样式违规?如果我可以将其改编为 Rails 等框架,则可以加分,以便遵循 Rails 惯用语。


我最近开始为 Ruby 寻找类似的东西。到目前为止我遇到的情况:

  • 斋九郎
  • 鲁迪
  • 鞭打

这些可能是开始的地方。不幸的是,我还没有使用这三个中的任何一个来提供一个好的意见。


Saikuro 和 Flog 可以很好地了解代码复杂性的基本概念。您还可以使用像 rcov 这样的工具来查看您的测试覆盖率。
Rails 项目有一个插件,可以将所有这些指标组合到一个 rake 任务中。它被称为metric_fu。


我最近发现并测试过的项目:

  • https://github.com/railsbp/rails_best_practices

    • 似乎有效,并给出了合理的警告
  • https://github.com/simplabs/excellent

    • 有效,但有不少误报
  • https://github.com/troessner/reek

    • 我不同意这个工具的大部分警告,但它有效
  • http://www.cs.umd.edu/projects/PL/druby/

    • 这需要ocaml;没试过,不过好像还不错
  • http://roodi.rubyforge.org/

    • 似乎不兼容 Ruby 1.9
  • https://github.com/gdb/ruby-static-checker

    • 对我来说坏了,只捕获名称错误,所以单元测试应该涵盖这一点。
  • https://github.com/michaeledgar/laser

    • 不为我编译

您可能想试试 RuboCop。它是基于 Ruby 样式指南的 Ruby 代码样式检查器。它维护得非常积极,它基于标准的 Ruby 工具(如 ripper 库)。它适用于 Ruby 1.9 和 2.0,并具有出色的 Emacs 集成。我希望你会发现它有用!


另一个不错的工具,虽然在作者的早期阶段是臭气:

http://reek.rubyforge.org/

reek 目前包含对以下代码异味的非常简单的检查:

  • 长方法
  • 大班
  • 功能嫉妒
  • 无法交流的名字
  • 长参数列表
  • 实用功能
  • 嵌套迭代器
  • 控制对
  • 复制
  • 项目清单

我个人认为它仍然存在太多误报,但仅查看我的一些代码中的输出帮助我重新考虑了有关代码样式和架构的一些决定。


Dust 看起来可以帮助您找到未使用和无用的代码,这似乎有点适合您的需求。

我不知道有任何其他此类工具。
这个问题在 ruby?? 中比在 java 中更难解决——你会注意到所有这些 java 工具都标榜自己使用代码的"静态分析"。
ruby 代码的静态分析通常是不可能的,因为没有任何静态可以分析(方法通常在运行时创建等等)

无论如何,其中一些东西在 ruby?? 中是不需要的,因为语言内置了它们。
例如,您不需要编码标准来强制您的类都是 NamedLikeThis,因为如果不是,代码将无法工作。

附言我必须添加标准免责声明,即这类工具通常有点牵强附会。你可以花一整天的时间让你的代码遵循工具认为它应该是的样子,并最终得到比你开始时更多的错误。
恕我直言,最好的解决方案是流利地编写代码,以便您可以更轻松地阅读它。再多的静态分析都不会像人类阅读代码那样好,它清楚地说明了它的目的。能够做到这一点是 ruby?? 比许多其他语言领先几光年的地方。我个人建议您将精力集中在学习如何更流利地写作,并教育您的团队了解这些事情,而不是花时间进行静态分析。


Code Climate 是一个 SaaS 工具,它通过 git 集成并自动"评分"您的代码。如果质量突然下降,它会通过各种渠道通知您。用户界面也不错。


当被问到这个问题时,我没有看到这个问题,但我做的一篇博客文章也可能会有所帮助。在其中我介绍了一堆 Ruby 工具,特别介绍了 4 个代码质量工具...

  • 鲁迪
  • 灰尘
  • 鞭打
  • 斋九郎
  • Towelie 和 Flay 也值得一试

    Ruby Tools Roundup

    现在我们已经将许多工具组合成一个唯一的 Ruby 代码质量和指标监控工具,称为 Caliper。这可能很好地满足您的需求。它跟踪项目生命周期内的各种质量指标。

    Caliper - 改进你的 Ruby 代码


    还有优秀的。我还没有尝试过,但它看起来也很有希望。


    推荐阅读

      开发linux命令工具?

      开发linux命令工具?,系统,工具,环境,状态,平台,设计,数据,电脑,中小企业,标

      linux一般检查命令?

      linux一般检查命令?,网络,系统,检测,情况,工作,信息,命令,进程,时间,设备,lin

      检查硬件linux命令?

      检查硬件linux命令?,信息,系统,第一,数据,设备,检测,命令,情况,灵活,实时,如

      linux支持管道的命令?

      linux支持管道的命令?,通信,标准,系统,信息,地方,数据,管道,环境,设备,工具,L

      linux命令联想工具?

      linux命令联想工具?,地址,工作,系统,工具,状态,标准,信息,命令,目录,左下角,L

      检查路由命令linux?

      检查路由命令linux?,网络,地址,系统,信息,工具,电脑,时间,通信,服务,命令,lin

      linux命令忽略错误?

      linux命令忽略错误?,系统,地址,工作,信息,设备,命令,设计,灵活,观察,标准,lin

      linux命令工具怎么用?

      linux命令工具怎么用?,地址,系统,工作,单位,工具,密码,服务,命令,处分,基础,

      linux数据库检查命令?

      linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,

      linux分区检查命令是?

      linux分区检查命令是?,系统,设备,工具,管理,情况,信息,检测,分区,密码,单位,

      linux命令行截图工具?

      linux命令行截图工具?,工具,电脑,软件,系统,截图,网站,工作,环境,暂停,命令,L

      linux命令工具教程?

      linux命令工具教程?,系统,工具,信息,基础,基础知识,代码,在线,地址,项目,服

      linux命令行渗透工具?

      linux命令行渗透工具?,系统,发行,网络,工具,信息,地址,管理,数据,工程,中国,

      linux卸载工具命令?

      linux卸载工具命令?,软件,系统,工具,名称,电脑,信息,命令,终端,程序,提示符,l

      linux检查流量的命令?

      linux检查流量的命令?,工具,系统,实时,状态,网络,信息,数据,密码,地址,流量,l

      linux命令流程图工具?

      linux命令流程图工具?,软件,工具,在线,网站,电脑,流程图,网络,名称,系统,首

      linux命令输入工具?

      linux命令输入工具?,系统,工具,工作,地址,信息,命令,时间,管理,环境,状态,怎

      远程linux命令行工具?

      远程linux命令行工具?,工具,软件,平台,灵活,系统,代码,图片,网络,环境,管理,l

      linux命令行补全工具?

      linux命令行补全工具?,系统,工具,软件,信息,智能,命令,检测,地址,不了,环境,w

      linux检查更新命令是?

      linux检查更新命令是?,工作,软件,地址,系统,信息,管理,命令,目录,最新,标准,l