Skip to content
Weibo's Home
Go back

Rubocop - Ruby static code analyzer

Edit page

Rubocop 是一個 Ruby static code analyzer 主要用來 format coding style

Installation

Add following line to Gemfile.rb

gem 'rubocop', require: false

Configuration

Config 可以參考 github 上的 Config 資料夾

裡面有三個檔案

改好後命名為 .rubocop.yml 放在 repo 裡,當你執行 rubocop 指令的時候就會讀取這個檔案的設定開始檢查語法

以下是我自己用的 Rules

把一些比較麻煩的 rules disable 掉了

AllCops:
  Exclude:
    - 'db/migrate/*'
    - 'vendor/**/*'
Rails:
  Enabled: true
Rails/HasAndBelongsToMany:
  Enabled: false
Bundler/OrderedGems:
  Enabled: false
Style/ClassAndModuleChildren:
  Enabled: false
Style/ConditionalAssignment:
  Enabled: false
Style/Documentation:
  Enabled: false
Style/FrozenStringLiteralComment:
  Enabled: false
Style/Next:
  Enabled: false
Style/GuardClause:
    Enabled: false
Metrics/LineLength:
  Enabled: false
Metrics/BlockLength:
  Enabled: false
Metrics/MethodLength:
  Enabled: false
Metrics/AbcSize:
    Enabled: false

rubocop 可以幫你自動修正一些語法,只要加上 --auto-correct 參數

rubocop --auto-correct

但是有時候想要一步一步修語法,我只想修正有關 Style 的語法,就要加上 --only 參數,其他以此類推

rubocop --auto-correct --only Style
rubocop --auto-correct --only HashSyntax
rubocop --auto-correct --only StringLiterals

Rake task

如果要整合 travis ci 在每次 code push 的時候檢查語法的話,就要把 rubocop 寫成 rake task,然後寫成 rake default 會跑的 task

lib/tasks/rubocop.rake 加上這幾行

begin
  require 'rubocop/rake_task'
  RuboCop::RakeTask.new
rescue LoadError # rubocop:disable Lint/HandleExceptions
end

然後修改一下 Rakefile

require_relative 'config/application'
Rails.application.load_tasks
task default: [:rubocop]

這樣當你打 rake 的時候就會自動幫你檢查語法了

要是有不懂的名詞可以查 Official document


Edit page
Share this post:

Previous Post
Review of bamboofox platform
Next Post
symbolic exection introduction