概要
RuboCop 設定に関するアレコレです。
- 設定ファイルってどこに何を置くんだろう?
- 設定項目一覧ってどこにあるんだろう?
- デフォルトの設定ってどこにあるんだろう?
ということが気になったので、それについてまとめています。
RuboCop とは
(Omitted)
以下の資料が非常にわかりやすかったため、RuboCop に関する説明は省略します。
設定ファイル (.rubocop.yml
)
RuboCop の挙動は.rubocop.yml
で設定可能です。
ホームディレクトリとかプロジェクトディレクトリに配置できるとのことですが、基本はプロジェクトのルートディレクトリに配置しておくと良いと思います。
The behavior of RuboCop can be controlled via the .rubocop.yml configuration file. It makes it possible to enable/disable certain cops (checks) and to alter their behavior if they accept any parameters. The file can be placed either in your home directory or in some project directory.
設定項目一覧
Cop (Check項目) 一覧は RuboCop のデフォルト設定ファイル を見るのが一番良さそうでした。
次に良さそうだった方法としては、RubyDoc を直接見ると内容がわかりそうでした。
検索窓に気になる単語を入れて、頑張ってお目当ての設定を探しましょう!
基本となる Cop は以下の4種類があるそうです。
- Style (スタイルについてのCop)
- Lint (誤りである可能性が高い部分やbad practiceを指摘するCop)
- Metrics (クラスの行数や1行の文字数などに関してのCop)
- Rails (Rails特有のCop)
Lint ってなんやねんって思って調べてみると、通信用語の基礎知識が出てきました。
通常、単にlintと言うとUNIXコマンドのC用構文チェッカの意だが、C以外の言語にも同種のプログラムがいくつか作られている。例えばHTML用のHTML-lintとして、Another HTML-lintが有名である。
なお、lintとは元々「リント」という布(リンネルの片面を起毛して柔らかくした布で昔の包帯などに用いられた)または「糸くず」の意で、乾燥機の糸くず取り(lint trap)から余計なゴミを取り除く様をプログラム名として流用したものである。
な、なるほど?
デフォルト設定
デフォルト設定の確認は YAML ファイルを確認すれば行えます。
それぞれ、
- default.yml (デフォルトで設定されている値)
- disabled.yml (デフォルトでオフになっている Cop)
- enabled.yml (デフォルトでオンになっている Cop)
に記載されています。
Ruby バージョン
Ruby バージョンを以下のとおり指定できます。
AllCops:
TargetRubyVersion: 2.2
Rails モード
Rails 用に最適化されたモードは以下を.rubocop.yml
に追記しておけば使用可能です。
ファイルパスからからどのチェックをするのが良いかを自動的に判断してくれるそうなので、Rails プロジェクトなら基本true
にしておけば良いと思います。
Rails:
Enabled: true
該当ソース
対象ファイル
RuboCop は開始したディレクトリから再帰的に全てのファイルをチェックしますが、基本は Ruby ファイルのみをチェックします。
チェック対象の追加や削除はInclude
やExclude
で行えるそうです。
AllCops: Include: - '**/Rakefile' - '**/config.ru' Exclude: - 'db/**/*' - 'config/**/*' - 'script/**/*' - !ruby/regexp /old_and_unused\.rb$/
まとめ
PullRequest 作成時に CI ツールが自動で RuboCop してくれるようにするとめっちゃ便利(*´ェ`*)