0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rails 自動整形ツールRubocopの導入

Posted at

はじめに

rubyの自動整形ツールであるrubocopの導入方法をまとめる。

環境

  • rails 6.0.4.4
  • ruby 2.6.5
  • rubocop 1.25.1

Rubocopとは

Rubyのコード解析ツール。
自身で決めた規定通りにコードを書けているか解析、かつ、自動で修正してくれるツール。
インデントを揃えたり、余分な改行・スペースを削除したりできる。
RubyStyleGuideに基づいて指摘を行う。

公式 https://rubocop.org/

Rubocopの導入方法

Gemファイルに記載

Gemfile.
groupdevelopment do
   gem 'rubocop', require: false
end

インストール

ターミナル.
bundle install

Rubocopの設定ファイルを新規作成

ターミナル.
touch .rubocop.yml

.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の実行

ターミナル.
bundle exec rubocop -a

「-a」を付けることでチェック内容を自動修正する。

おわりに

実行後はコードがすごく読みやすくなる。間違いが見つけやすくなり、修正もしやすくなるので、一区切りごとにやっていく。
バージョンの違いによって、動作に違いがあるようなので、確認する必要がある。

参考

【Rails】RuboCopの基本的な使用方法と出力の見方

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?