Rubocop


Rubocopを使う機会があったので、備忘録。

rubocopを導入する

Gemfile
group :development do
  gem 'rubocop', require: false
  gem 'rubocop-performance'
  gem 'rubocop-rails'
end

に追記をして

ターミナル
bundile install

.rubocop.ymlを設定
1か2のどちらかで。

  1. touch .rubocop.ymlでファイルを作成し、https://github.com/rails/rails/blob/main/.rubocop.yml からファイルをコピーする。
  2. rubocop --auto-gen-configを実行する。

自動修正

bundle exec rubocop --auto-correct

rubocop_airbnbを設定する。

Gemfile
group :development do
    gem 'rubocop-airbnb'

touch .rubocop_airbnb.ymlで.rubocop_airbnb.yml を作成し、

.rubocop_airbnb.yml
require:
  - rubocop-airbnb
.rubocop.yml
inherit_from:
  - .rubocop_airbnb.yml

bundle install

ターミナル
rubocop --require rubocop-airbnb

で実行だけど。

競合した!!

ターミナル
Bundler could not find compatible versions for gem "rubocop":
potepanec_1  |   In snapshot (Gemfile.lock):
potepanec_1  |     rubocop (= 1.13.0)
potepanec_1  | 
potepanec_1  |   In Gemfile:
potepanec_1  |     rubocop-airbnb was resolved to 1.0.0, which depends on
potepanec_1  |       rubocop (= 0.52.1)
potepanec_1  | 
potepanec_1  |     rubocop-packaging was resolved to 0.5.1, which depends on
potepanec_1  |       rubocop (< 2.0, >= 0.89)

rubocop-packageingとrubocop-airbnbで使うrubocopのバージョンが違うらしい。

今回はrubocop-airbnbを使いたいから、競合しないようにコメントアウトしました。

Gemfile
group :development do
   gem 'rubocop', require: false
#  gem 'rubocop-performance'
#  gem 'rubocop-rails'
end

.rubocop.ymlファイルに設定する

rubocopの設定を行う。

.rubocop.yml
inherit_from:
  - .rubocop_airbnb.yml

#以下にはrubocopで検証したくないフォルダを指定する
AllCops:
  Exclude:
    - 'db/**/*'
    - 'bin/*'
    - 'config/**/*'
    - 'lib/**/*'
    - 'vendor/**/*'

# 文字制限の解除
Metrics/LineLength:
  Enabled: false

rubocop-airbnbを実行

実行コマンド

ターミナル
bundle exec rubocop --require rubocop-airbnb

bundle exec rubocop --require rubocop-airbnb -a #自動修正

参考資料

rubocop

Rubocopをインストールして、Rails本家の設定を使う方法
Railsの品質を上げるRuboCopとは?インストールや使い方を紹介!
Rubocopを使ってRailsコードをチェックしてみる
Rubocopチートシート
rubocop-airbnb
rubocop−airbnbを使うにあたって