こたつとみかんとプログラミング

33才実務未経験ですがウェブエンジニアにジョブチェンジするために勉強したことをアップするためのブログです。

rubocop-airbnb 導入方法まとめ

rubocop 本体は設定項目が多いので、ライトな rubocop-airbnb を導入することにした。
以下、導入方法のまとめと、無視したいエラーの書き方についてまとめ。

導入方法

1. gemのインストール

gemfile の開発環境とテスト環境に rubocop-airbnb を追加し、bundle install

group :development, :test do
  gem 'rubocop-airbnb'
end

2. rubocop-airbnb の設定

ルートディレクトリに .rubocop.yml.rubocop_airbnb.yml の2ファイルを作成し、以下の内容を記述

# .rubocop.yml

inherit_from:
  - .rubocop_airbnb.yml

# Rails用に最適化
Rails:
  Enabled: true

# 文字数上限
LineLength:
  Max: 130

AllCops:
  Exclude:
    - 'db/**/*'
    - 'config/**/*'
    - 'script/**/*'
    - 'node_modules/**/*'
    - 'bin/*'
    - '**/Gemfile'
    - 'vendor/**/*'
    - '.git/**/*'

Exclude で除外フォルダ・除外ファイルを設定している。

# .rubocop_airbnb.yml
require:
  - rubocop-airbnb


以上で設定は終了。
以下、実行して起動(エラーチェック&エラー内容書き出し)すれば完了。

$ bundle exec rubocop --require rubocop-airbnb

特定ファイルのみエラーを無視する方法

今回のケースは、 devise 導入しているアプリにおいて、devise 公式で案内されている記述にエラーが吐き出されてしまった例。
スキルが高ければリファクタリングの方法がわかるのかもしれないが、現状の自分ではできなかったので、エラーを無視することに。
方法は意外と簡単だった。rubocop.yml に記述を設定すればいいだけ。
今回は2つのエラーを除外している。

inherit_from:
  - .rubocop_airbnb.yml

# Rails用に最適化
Rails:
  Enabled: true

# 文字数上限
LineLength:
  Max: 130

# devise
Airbnb/ClassOrModuleDeclaredInWrongFile:
  Exclude:
    - 'app/controllers/Users/*'

Rails/HelperInstanceVariable:
  Exclude:
    - 'app/helpers/application_helper.rb'

AllCops:
  Exclude:
    - 'db/**/*'
    - 'config/**/*'
    - 'script/**/*'
    - 'node_modules/**/*'
    - 'bin/*'
    - '**/Gemfile'
    - 'vendor/**/*'
    - '.git/**/*'


以下、参考記事
rubocop−airbnbを使うにあたって - Qiita
[Rubocop] 特定のルールを特定のファイル(ディレクトリ)でのみ無効にする | qs Developers