Rubocopとは
Ruby(Rails)のコードが、コーディング規約に則っているか解析し、修正までしてくれるgem(=静的コード解析ツール)。
*開発現場では、コードの可読性や統一性を保つために、企業やプロジェクト単位で「コードの書き方のルール(コーディング規約)」が設けられていることが多い。
Rubocopには様々な設定がある
Rubocopが解析する際の基準となるコーディング規約は、上述の通り、あくまで企業やプロジェクト単位で決められたルールなのでバラバラですよね。
そんな中、今回はairbnbで使用されている設定を使用します。
準備
-
Gemfileに以下追記 +
bundle install
Gemfilegroup :development do #中略 gem 'rubocop-airbnb' end
-
設定ファイルの作成
アプリケーションフォルダ配下(appと同じ階層)に、.rubocop.yml、.rubocop_airbnb.ymlを作成。 -
設定ファイルの編集
inherit_from:
- .rubocop_airbnb.yml
#ここにはrubocopでコード解析したくないファイルやフォルダを指定
AllCops:
Exclude:
- 'db/**/*'
- 'bin/*'
- 'config/environments/*'
- 'config/application.rb'
- 'config/initializers/*'
- 'config/spring.rb'
- 'lib/tasks/*'
- 'vendor/**/*'
- 'path/ruby'
require:
- rubocop-airbnb
実行
1. 違反箇所の解析
bundle exec rubocop —-require rubocop-airbnb
2. 違反箇所の修正
基本的には、検証で使用したコマンドに-aオプションをつけて、解析対象を指定すれば良いだけ。
-
ファイル・フォルダ指定:
bundle exec rubocop --require rubocop-airbnb -a {解析対象ファイルorフォルダ}
-
origin/mainと差分があるファイルを指定:
bundle exec rubocop --require rubocop-airbnb -a $(git diff $(git merge-base origin/master HEAD) —diff-filter=d —name-only)
最後に
-aオプションで自動修正してくれる違反は全てではありません。また、公式ドキュメントでも-aは実験的オプションとありますので、使用には注意してください。