LoginSignup
4
5

More than 3 years have passed since last update.

Rubocup導入

Posted at

Rubocop.png

Rubocopとは

Rubocop(ルボコップ)はRubyの静的コード解析ツール(Gem)です。
「インデントが揃っていない」「余分な改行・スペースがある」などの指摘をRubyStyleGuideに基づいて行ってくれます。

Rubocopを導入することにより、レビューに掛かる時間を減らし、コードの品質を担保できるようになります。
Rubocopの指摘は設定で変更が可能です。(下記は一例)

インストール

Gemfile
group :development do
  gem 'rubocop', require: false
end
ターミナル
bundle install

上記コマンドで、Rubocopを導入できました。

Rubocopの設定

アプリ直下(Gemfileなどと同じ場所)に
「.rubocop.yml」 ファイルを作ります。

ターミナル
touch .rubocop.yml

ここでは対象から除外するファイル・ディレクトリの指定だったり、無視するエラーの指定だったりのカスタマイズをします。

.rubocop.yml
AllCops:
# 除外するディレクトリ(自動生成されたファイル)
# デフォルト設定にある"vendor/**/*"が無効化されないように記述
 Exclude:
   - "vendor/**/*" # rubocop config/default.yml
   - "db/**/*"
   - "config/**/*"
   - "bin/*"
   - "node_modules/**/*"
   - "Gemfile"


# 1行あたりの文字数をチェックする
Layout/LineLength:
 Max: 130
# 下記ファイルはチェックの対象から外す
 Exclude:
   - "Rakefile"
   - "spec/rails_helper.rb"
   - "spec/spec_helper.rb"

# RSpecは1つのブロックあたりの行数が多くなるため、チェックの除外から外す
# ブロック内の行数をチェックする
Metrics/BlockLength:
 Exclude:
   - "spec/**/*"

# Assignment: 変数への代入
# Branch: メソッド呼び出し
# Condition: 条件文
# 上記項目をRubocopが計算して基準値を超えると警告を出す(上記頭文字をとって'Abc')
Metrics/AbcSize:
 Max: 50

# メソッドの中身が複雑になっていないか、Rubocopが計算して基準値を超えると警告を出す
Metrics/PerceivedComplexity:
 Max: 8

# 循環的複雑度が高すぎないかをチェック(ifやforなどを1メソッド内で使いすぎている)
Metrics/CyclomaticComplexity:
 Max: 10

# メソッドの行数が多すぎないかをチェック
Metrics/MethodLength:
 Max: 30

# ネストが深すぎないかをチェック(if文のネストもチェック)
Metrics/BlockNesting:
 Max: 5

# クラスの行数をチェック(無効)
Metrics/ClassLength:
 Enabled: false

# 空メソッドの場合に、1行のスタイルにしない NG例:def style1; end
Style/EmptyMethod:
 EnforcedStyle: expanded

# クラス内にクラスが定義されていないかチェック(無効)
Style/ClassAndModuleChildren:
 Enabled: false

# 日本語でのコメントを許可
Style/AsciiComments:
 Enabled: false

# クラスやモジュール定義前に、それらの説明書きがあるかをチェック(無効)
Style/Documentation:
 Enabled: false

# %i()構文を使用していないシンボルで構成される配列リテラルをチェック(無効)
Style/SymbolArray:
 Enabled: false

# 文字列に値が代入されて変わっていないかチェック(無効)
Style/FrozenStringLiteralComment:
 Enabled: false

# メソッドパラメータ名の最小文字数を設定
Naming/MethodParameterName:
 MinNameLength: 1

Rubocopには、他にも以下のような標準設定がしてあります

Rubocop 標準設定 備考
文字列 シングルクォーテーション 式展開や文字列内にシングルクォーテーションがある場合はダブルクォーテーションを使う 
変数名とメソッド名 キャメルケースで定義する

修正の流れ

ターミナル
#修正内容を確認
bundle exec rubocop
ターミナル
# 修正内容を自動修正
bundle exec rubocop -a
# または
bundle exec rubocop --auto-correct 

以上で、Rubocopが自動でチェックしながらコードを勝手に綺麗にしてくれます。
とてもありがたい機能ですね!!

参考

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5