自动代码质量工具的Ruby?
有一件事我真的很想念Java,就是工具支持。 FindBugs,Checkstyle和PMD是一个三位一体的代码质量指标和自动错误检查。
有没有什么会检查简单的错误和/或风格违反Ruby代码? 奖励点,如果我可以适应像Rails这样的框架,以便遵守Rails惯用法。
我最近开始为Ruby寻找这样的东西。 到目前为止,
- Saikuro
- Roodi
- 鞭打
这些可能是开始的地方。 不幸的是,我还没有使用这三个中的任何一个还没有提供一个好的意见。
Saikuro和Flog可以很好地获得代码复杂性的基本概念。 您也可以使用像rcov这样的工具来查看您的testing覆盖率。
有一个Rails项目的插件,将所有这些度量标准组合成一个Rake任务。 它被称为metric_fu 。
我最近find和testing的项目:
- https://github.com/railsbp/rails_best_practices
- 似乎工作,并给出明智的警告
- https://github.com/simplabs/excellent
- 工程,但不less误报
- 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
- 对我来说是破碎的,只会出现名称错误,所以unit testing应该覆盖这个错误。
- https://github.com/michaeledgar/laser
- 不为我编译
你可能想尝试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利,并教育你的团队这样的事情,比花时间静态分析。
另一个不错的工具,虽然在作者的早期阶段是憎恶的:
reek目前包括对以下代码异味的非常天真的检查:
- 长方法
- 大class
- 特征羡慕
- 没有沟通的名字
- 长参数列表
- 实用function
- 嵌套的迭代器
- 控制夫妇
- 复制
- 项目清单
就个人而言,我认为它仍然有太多的误报,但只是看看我的代码中的输出,帮助我重新思考一些关于代码风格和体系结构的决定。
Code Climate是一个SaaS工具,通过git进行集成,并自动“分级”您的代码。 如果质量突然下降,它会通过各种渠道通知您。 好的用户界面以及。
被问及时我没有看到这个问题,但是我做的博客文章可能也有帮助。 其中我涵盖了一堆Ruby工具,特别是涵盖了4个代码质量工具。
- Roodi
- 灰尘
- 鞭打
- Saikuro
这也可能是值得检查Towelie和Flay
http://devver.wordpress.com/2008/10/03/ruby-tools-roundup/
现在我们已经将很多工具结合到一个名为“Caliper”的Ruby代码质量和度量监视工具中。 这可能适合您的需求。 它追踪项目生命周期中的各种质量指标。
Caliper – 改进您的Ruby代码
还有优秀的 。 我还没有尝试过,但也看起来很有希望。