Railsと同じRuboCopの設定が利用できるrubocop-rails gemを作った

(image)Railsと同じRuboCopの設定が利用できるrubocop-rails gemを作った

【追記】本記事で紹介しているgem, rubocop-railsは公式RuboCopチームの要望により、rubocop-rails_configというgemにRenameされました。

本gemご利用の方は下記のrubocop-rails_configのご利用をお願いします。

toshimaru/rubocop-rails_config


Railsとほとんど同じRuboCopの設定が利用できるrubocop-railsというgemを作りましたので紹介します。

モチベーション

Rubyの静的コード解析の定番といえばRuboCopですよね。ですがRuboCopの設定ファイルrubocop.ymlの設定作業って結構大変じゃないですか?

RuboCopはデフォルトだと結構うるさすぎることが多いのでプロジェクト・チームに応じて何かしら設定はカスタマイズすると思います。しかし1つ1つ設定項目毎にチームのコンセンサスを取るのは非常にダルい。チームの一人が持ち込んだ<俺の考える最強のRuboCop設定>に従うという手もありますが「誰がお前の作った設定に従うか!」という気持ちも無くはない。

「何かしらRuboCop設定のレールが欲しいよね〜 :railway_car:」というところで閃き:bulb:、「だったらrailsチームの用意した公式rubocop.ymlを使えばいいじゃない」ということで冒頭のRailsとほぼ同じ設定を持ったrubocop-rails gemを作りました。

使い方

使い方は rubocop-rails をinstallした後に、下記の設定を記述した rubocop.yml を用意する。

inherit_gem:
  rubocop-rails:
    - config/rails.yml

オーバーライドしたい設定、追加したい設定があれば、適宜同じrubocop.yml内に設定を追加していく。

実際使ってみてどうか

実際使ってみるとうるさすぎず、しかしコードスタイルとしてきっちり統一させたいところは統一されており、使い心地はなかなか悪くないです。

また副次効果として、普段からこのgemの設定に慣れておくと、Rails本体にコントリビュートするときにRailsのrubocop設定違反にならないコードを書けて便利。 :innocent:

こんなRuboCop設定もあるよ

他の<いい感じ>に設定されたRuboCop設定も紹介します。

これらの設定はきちんとチーム・会社でディスカッションされた上で作られたものだと思いますので、こちらもあわせて導入を検討してみてもいいかもしれません。