分享 RubyCritic-一款不错的检测代码质量工具

rubyist518 · January 15, 2016 · Last by jarorwar replied at February 29, 2016 · 6272 hits

最近在开发Cloud Insight API 时,发现一个可以检测 ruby 代码质量的工具-RubyCritic

RubyCritic 集成 Reek, FlayFlog这 3 个分析代码的工具,对你的 Ruby 代码进行静态分析并生成质量报告。

功能介绍

  1. 可以总览你的项目,并且可以对代码打分 (百分制)

  2. 根据各自的坏味道数量建立文件索引

对不同文件按照改动频率复杂度重复度坏味道4 个维度进行综合评定代码质量等级

3. 可以查看具体的类文件中的代码质量问题

用法

看一下 rubycritic(2.7.0) 指令

rubycritic --help

Usage: rubycritic [options] [paths]}

-p, --path [PATH]               设置质量报告存放的路径(默认: tmp/rubycritic)  
-f, --format [FORMAT]           设置报告格式:
                                  html (默认)
                                  json
                                  console 
-s, --minimum-score [MIN_SCORE] 设置最小分数
-m, --mode-ci                   使用CI模式(更快,但仅分析最后一次提交)
    --deduplicate-symlinks      基于最后目标去除重复的符号链接
    --no-browser                不使用浏览器打开html格式的报告
    --suppress-ratings          压制质量评级 
-v, --version                   显示版本号
-h, --help                      显示帮助信息

运行

bundle exec rubycritic

的效果如下图:

从上图也能看出 rubycritic 分析代码流程。

其他用法

平时使用guard工具的同学,可以使用guard-rubycritic, 代码改动时会自动分析你的代码。 有兴趣的同学也可以将它集成到Jenkins CI

扩展功能

在使用rubycritic过程中,每次都要手动打开浏览器进行查看质量报告,太麻烦了。于是给它添加一个功能

目前仅支持 Linux 和 Mac OSX 系统:

支持 Linux 浏览器: Firefox(默认)ChromeChromium

支持 Mac OSX 浏览器: Safari(默认)ChromeFirefox

运行步骤

  • 修改 Gemfile ruby gem 'rubycritic', github: 'superiorlu/rubycritic', branch: 'open_with_browser'
  • 运行rubycritic -O chrome即可。

源代码:https://github.com/superiorlu/rubycritic/tree/open_with_browser

总结

本文简单介绍了rubycritic和用法,可能某些知识点会有所遗漏,不足之处请大家指正。

更新 (2016.01.29)

目前rubycritic已经更新到了2.7.0, 已经默认使用浏览器打开 html 格式的报告了。😄

要是能把历史都记录下来就更像 codeclimate 了

@markgeek 恩呢 可以说codeclimaterubycritic的 web 版了 😏

MetricFu 这个也整合了好多分析库

用用试试看,

@hemslo 恩 这个工具很综合了,在 mac 上试装了一下,遇到'rcov' 安装问题,你是怎么解决的呢❓

用了这么多工具,也写不好一份代码。

工具是死的,人是活的,个人觉得研究一下工具评分规则和规则背后的缘由还是一个不错的选择。

@hooopo 对的,不错的建议! 知其然,知其所以然了。学习好的代码,多从作者的角度去思考,就像@xiaoronglv 那篇《How Minitest works》,把这些能运用到平时,对自己就是一个很好的提升。

@rubyist518 我没用 rcov,用的 simplecov

10 Floor has deleted

+1 抽空看一下。原来用 rubocop

@jarorwar 开发用的rubocop 规范代码格式。 推荐用一下 rubocop 的插件https://github.com/bbatsov/rubocop#editor-integration 😃

@rubyist518 https://github.com/codeclimate/codeclimate 恩。这个我还没跑起来,请入坑!!!

You need to Sign in before reply, if you don't have an account, please Sign up first.