关注代码质量是高效开发必须要做的一件事,那么在 Ruby 开发的过程中,是否有什么好的代码质量检测工具呢?下面由 Ruby 工程师路英瑞介绍一下 RubyCritic——一款还不错的代码质量检测工具。

最近在开发 Cloud Insight API(一款能够优雅监控多种操作系统、数据库、中间件、云主机的解决方案) 时,发现一个可以检测 Ruby 代码质量的工具-RubyCritic。

RubyCritic 集成 Reek, Flay 和 Flog 这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 ruby critic的效果如下图:

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

其他用法

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

扩展功能

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

目前仅支持 Linux 和 Mac OS X 系统:

  • 支持 Linux 浏览器: Firefox(默认)、Chrome 和 Chromium
  • 支持 Mac OS X 浏览器: Safari(默认)、Chrome 和 Firefox

运行步骤

修改 Gemfile

gem 'rubycritic', github: 'superiorlu/rubycritic', branch: 'open_with_browser'

运行rubycritic -O chrome即可。

点此阅读源代码

总结

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

更新(2016.01.29)

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

本文系国内 ITOM 行业领军企业 OneAPM Ruby Agent (Ruby 应用性能监控神器)工程师路英瑞原创,转自路英瑞简书。想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

最新文章

  1. 从xml中构建sqlSessionFactory
  2. HTTP协议中的5类状态码
  3. UIImageView旋转任意角度---实现方法
  4. 李炎恢bootstarp_项目实战__瓢城企业(注释+源码)
  5. 类:初识类的事件(有点不明白,怎么普通Precedure可以赋值给TEvent)
  6. Javascript数据类型共有六种
  7. Kafka 源代码分析之LogManager
  8. 团队作业4——第一次项目冲刺 SiStH DaY
  9. 201621123031 《Java程序设计》第4周学习总结
  10. jquery获取value值时将数字型字符串前面的0自动截取处理方法
  11. jqgrid自定义列表开发=》实现高级查询
  12. 【vue】vue +element prop用法
  13. java学习——异常处理
  14. TWebBrowser禁止弹出Alert对话框
  15. jdk1.8+SpringAOP注解报java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut select错误的不知原因的解决办法[仅供参考]
  16. EntityFramework Code-First 简易教程(一)
  17. js面对对象编程(二):属性和闭包
  18. flask基础之请求钩子(十二)
  19. BZOJ 2140 稳定婚姻
  20. Android 官方文档:(一)动画和图像 —— 1.5 画布和画图

热门文章

  1. 【转】周末班LR笔记总结—新手入门必备
  2. PHP输入流php://input介绍
  3. PHP之数组遍历
  4. 让aspx页面也可以通过url路由进行访问
  5. Xcode中,调试console窗口输出error: Couldn't materialize struct: the variable 'cell' has no location, it may have been optimized out的问题
  6. transform3D实现翻页效果
  7. OC中 block 的用法
  8. 安装sinopia-ldap
  9. 学习C++ Primer 的个人理解(八)
  10. (转)RPC原理详解