Rubocopとは
RuboCop is a Ruby static code analyzer and code formatter. Out of the box it will enforce many of the guidelines outlined in the community
rubocop-hq/rubocop - Git Hub
Rubyの静的コードアナライザーおよびコードフォーマッターです。
デフォルトではRubystyle Guideにもとずき、コード解析を行います。
Rubocopは柔軟性に優れ、設定次第で、様々な解析ツールにカスタマイズできます。
何ができる?
Ruby関連のコードを読み込み、Rubystyle Guideに基づいていない誤った表現の部分を提示します。
また、提示するだけでなく、それを自動修正することができます。
導入
導入方法は一般的なGemと同じです。
$ gem install rubocop
bundlerを利用する場合は下記の記述をGemfileに書き込みます。rubocopは一般的はdevelop環境でしか使わないので、以下のように入れると良いでしょう。
group :development do
gem 'rubocop', require: false
end
require: false
になっている理由ですが、rubocopはスタンドアローン(外部に依存せずに扱うツール)なのでterminalから操作したいという意味でfalseとします。
また、rubocopは速い速度で開発が進められており、マイナーリリースの場合は下位互換性のない変更もあるため、不要にそのような変更を加えたくない場合は以下のバージョンで保守的にバージョンロックを行うのも一つの手です。
gem 'rubocop', '~> 0.82.0', require: false
bundlerを使っている場合はbundle install
を行い、gemをinstallします。
実行
$ bundle exec rubocop
bundlerを使う場合は以上のコマンドで実行します。
その後、解析が始まります。
$ bundle exec rubocop --auto-correct
自動修正を行いたい場合は以上のようなオプションをつけます。
オプション
-a/--auto-correct
自動修正をします
--auto-gen-config
rubocop_todo.ymlを作成し、察知した異常をtodoとしてファイルに書き込みます。
-C/--cache
キャッシュを使い、高速化させます。
-d/--debug
詳細デバッグ情報を出力します
--display-only-fail-level-offenses
指定された--fail-level
以上のオフェンスメッセージのみを出力します
--init
現在のディレクトリに.rubocop.ymlファイルを生成します。
-l/--lint
誤りである可能性が高い部分やbad practiceを指摘するCopのみを実行します。
-x/--fix-layout
Layoutのみを対象として自動修正を実行します。
関連ファイル
.rubocop.yml
このファイルで、詳細なcopの設定を行います。
https://docs.rubocop.org/en/stable/cops/
に詳しく設定することができるcopのリストが載っています
.rubocop_todo.yml
--auto-gen-config
を実行した際にTodoが追加されるファイルです。
拡張
gem 'rubocop-rspec', require: false
gem 'pre-commit', require: false
この二つがおすすめです。一つ目はrspecに対してコード解析をするGemです。
もう一つはGitにcommitした際に自動的にrubocopを走らせるGemです。
以下の記事を見てcommit時の自動化を設定しました。
rubocopをコミット時に自動で走らせる & 出来る限り自動で修正する
参考リンク
GitHub
https://github.com/rubocop-hq/rubocop
RuboCop公式
https://docs.rubocop.org/en/stable/
RuboCopをRailsオプションやLintオプションで使ってみよう
https://blog-ja.sideci.com/entry/2015/03/12/160441