关注代码质量是高效开发必须要做的一件事,那么在 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 官方博客

RubyCritic:一款不错的检测代码质量工具的更多相关文章

  1. 推荐五款优秀的PHP代码重构工具

    在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码.软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方.本文收集了五款出色的PHP代码重构工具,以帮 ...

  2. JSLint是一个JavaScript的代码质量工具

    JSLint是一个JavaScript的代码质量工具 可能都或多或少的知道JSLint是一个JavaScript的代码质量工具,一个JavaScript语法检查器和校验器,它能分析JavaScript ...

  3. LINUX下一款不错的网站压力测试工具webbench

    LINUX下一款不错的网站压力测试工具webbench 分类: Linux 2014-07-03 09:10 220人阅读 评论(0) 收藏 举报 [html] view plaincopy wget ...

  4. 九款常用的JS代码高亮工具

    代码高亮很重要,特别是当我们想要在网站或博客中展示我们的代码的时候.通过在网站或博客中启用代码高亮,读者更方便的读取代码块. 有很多免费而且有用的代码高亮脚本.这些脚本大部分由Javascripts编 ...

  5. 使用 Sonar 检测代码质量

    经历了一段时间的加班赶项目进度之后,今天终于闲下来了.忽然不知道干啥.于是,想着做点什么吧.突然想起了码云上面有个代码分析的功能,用的是 Sonar 于是想来玩玩这个. 一.下载Sonar,和初始化, ...

  6. 个人分享:平时开发中感觉几款不错 IDE 、插件、工具

    本人主业 C# 开发,由于是做 Web 开发,所以像 SQL.JavaScript 这些肯定经常要接触到.当然,平时本人也写过 Node.js.Java.Python之类,不过,这些只能讲简单了解而已 ...

  7. 找到一款不错的网站压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 引用 wget htt ...

  8. 【转】LINUX下一款不错的网站压力测试工具webbench

    原文链接:http://blog.csdn.net/xinqingch/article/details/8618704 安装: wget http://blog.s135.com/soft/linux ...

  9. 两款不错的Linux密码生成工具

    先介绍最简单的方法,Linux自带的 $ strings /dev/urandom | | ; echo whucNWhr35W6ZP0MxrLQ $ /dev/random | base64 | t ...

随机推荐

  1. Freemarker 输出$和html标签等特殊符号

    场景:程序员都不喜欢看文档,而更喜欢抄例子.所以,我们把平台组的组件都做成例子供别人参考.我们前端展示层使用的是freemarker,所以 遇到这个问题,比如我们要让前端显示freemarker自己的 ...

  2. 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合

    http://www.aboutyun.com/thread-6855-1-1.html 个人观点:大数据我们都知道hadoop,但并不都是hadoop.我们该如何构建大数据库项目.对于离线处理,ha ...

  3. C#学习笔记11:C#中的顺序结构、分支结构、循环结构

    顺序结构: 代码从Main()函数开始运行,从上到下,一行一行的执行,不漏掉代码. Int a=6; int b=5; int c=a+b; Console.Write(c); 分支结构: 代码有可能 ...

  4. 20160507-hibernate入门

    关联映射 多对一(Employee - Department) 一对多(Department-Employee) 一对一(Person - IDCard) 多对多(teacher - student) ...

  5. c++Builder 下的文件及目录操作

    转自 http://blog.csdn.net/ktcserver/article/details/936329 一.判断目录是否存在:           C++   Builder中提供了检查文件 ...

  6. ios Swift 备忘录

    Variables var myInt = var myExplicitInt: Int = // explicit type var x = , y = , z = // declare multi ...

  7. 使用SqlBulkCopy类批量复制大数据

    using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using Syst ...

  8. Kafka-0.10.0.0入门

    搭建环境略(伪集群即可以),但要注意Kafka的配置必须配置的,少配了也一样可以用,但是只能单机使用,外部机器无法连接,网上也有说. host.name=192.168.1.30 advertised ...

  9. OpenJudge/Poj 1316 Self Numbers

    1.链接地址: http://poj.org/problem?id=1316 http://bailian.openjudge.cn/practice/1316 2.题目: 总时间限制: 1000ms ...

  10. 第30条:用enum代替int常量

    在java1.5之前,表示枚举类型的常用模式是声明一组具名的int常量,每个类型成员一个常量: public static final int APPLE_FUJI = 0; public stati ...