自动代码质量工具的Ruby?

有一件事我真的很想念Java,就是工具支持。 FindBugs,Checkstyle和PMD是一个三位一体的代码质量指标和自动错误检查。

有没有什么会检查简单的错误和/或风格违反Ruby代码? 奖励点,如果我可以适应像Rails这样的框架,以便遵守Rails惯用法。

我最近开始为Ruby寻找这样的东西。 到目前为止,

  • Saikuro
  • Roodi
  • 鞭打

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

Saikuro和Flog可以很好地获得代码复杂性的基本概念。 您也可以使用像rcov这样的工具来查看您的testing覆盖率。
有一个Rails项目的插件,将所有这些度量标准组合成一个Rake任务。 它被称为metric_fu 。

我最近find和testing的项目:

你可能想尝试RuboCop 。 这是一个基于Ruby风格指南的Ruby代码风格检查器。 它保持相当活跃,它是基于标准的Ruby工具(如ripper库)。 它适用于Ruby 1.9和2.0,并具有很好的Emacs集成。 我希望你会发现它有用!

灰尘看起来像可以帮助你find没有用的和无用的代码,这看起来像它的sorting适合你以后的东西。

我不知道有任何其他这样的工具。
这个问题在ruby中比在java中解决起来要困难得多 – 你会注意到所有这些java工具都把自己定义为使用代码的“静态分析”。
ruby代码的静态分析通常是不可能的,因为没有什么可以分析的静态的(方法通常是在运行时创build的等等)

无论如何,其中的一些东西在ruby中是不需要的,因为这些语言将它们构build在其中。例如,你不需要一个编码标准来强制你的类都是NamedLikeThis因为如果它们不是。

PS我必须添加标准的免责声明,这些工具往往可以是一个红鲱鱼。 你可以花一整天的时间让你的代码遵守这个工具认为应该是的东西,并且最终会产生比你开始的更多的bug。
恕我直言,最好的解决scheme是写stream利的代码,以便您可以更轻松地阅读它。 静态分析的数量将不会像人类的阅读代码那样清楚地说明它的意图。 能够做到这一点的地方是ruby比许多其他语言早几年。 我个人会build议你把你的努力瞄准学习如何写得更stream利,并教育你的团队这样的事情,比花时间静态分析。

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

http://reek.rubyforge.org/

reek目前包括对以下代码异味的非常天真的检查:

  • 长方法
  • 大class
  • 特征羡慕
  • 没有沟通的名字
  • 长参数列表
  • 实用function
  • 嵌套的迭代器
  • 控制夫妇
  • 复制
  • 项目清单

就个人而言,我认为它仍然有太多的误报,但只是看看我的代码中的输出,帮助我重新思考一些关于代码风格和体系结构的决定。

Code Climate是一个SaaS工具,通过git进行集成,并自动“分级”您的代码。 如果质量突然下降,它会通过各种渠道通知您。 好的用户界面以及。

被问及时我没有看到这个问题,但是我做的博客文章可能也有帮助。 其中我涵盖了一堆Ruby工具,特别是涵盖了4个代码质量工具。

  1. Roodi
  2. 灰尘
  3. 鞭打
  4. Saikuro

这也可能是值得检查Towelie和Flay

http://devver.wordpress.com/2008/10/03/ruby-tools-roundup/

现在我们已经将很多工具结合到一个名为“Caliper”的Ruby代码质量和度量监视工具中。 这可能适合您的需求。 它追踪项目生命周期中的各种质量指标。

Caliper – 改进您的Ruby代码

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