環境
Ruby: 2.1.0
Rails: 4.1.5
RuboCop: 0.43.0
RuboCopってなに?
RubyのGemです。
設定したコーディング規約(後述)通りプログラムが書かれているかチェックします。
さらには自動で修正ができます。
どうしてコーディング規約が必要なの?
- プログラムの可読性を上げるため
- プログラムの品質を上げるため
どうやってインストールするの?
以下のコマンドを入力します。
※ バージョンはプロジェクトに合わせて変更してくださいね。
$ gem install 'rubocop' -v='0.43.0'
どうやって使うの?
以下のコマンドを入力します。
設定したコーディング規約(後述)に反している箇所を表示します。
$ rubocop
以下のようにファイル名を記入することで、そのファイルのみチェックができます。
$ rubocop Test.rb
規約に合わせて自動修正する場合は、以下のコマンドを入力します。
$ rubocop --auto-correct
$ rubocop -a # alias
他にも色々とオプションがあります。(が、割愛)
規約はどう設定するの?
主に以下の4ファイルで設定します。
default.yml # 規約の定義が書かれている
enabled.yml # デフォルトで有効なcopが書かれている
disabled.yml # デフォルトで無効なcopが書かれている
.rubocop.yml # 有効/無効を上書きする
前者3ファイルはrubocopディレクトリ内のconfig配下に、
.rubocop.ymlはroot配下に自分で作成します。
.rubocop.ymlの設定例
まずは方針をば。
今回導入したプロジェクトでは、Performanceのcopのみを有効にしました。
理由は以下の2つ。
- コーディング規約に全て目を通すのが大変
- 全てのcopを有効にすると、警告がわんさか出る
小さく始めて徐々に増やす作戦です、はい。
※ この作戦がうまく行くかは、また改めて書くかも...。
さて、.rubocop.ymlの具体的な設定例です。
- enabled.ymlを複製して、.rubocop.ymlにリネーム
- 各設定の
Enabled: trueをEnabled: falseに置き換える - Performanceの部分を全て削除
手順2で何をしたかというと、
enabled.ymlに書かれている有効なcopを、全て無効で上書きしています。
手順3では、Performanceの項目を削除することで、無効を解除しています。
これからどう運用するの?
- .rubocop.ymlに載っているcopのリファレンスを読む
- 有効/無効を判断する
- 有効なら.rubocopから削除. 無効なら残す
- 1~3を繰り返す