🕌

Railsプロジェクトの途中でとりあえずrubocopを導入する

2021/09/29に公開

rubocop入れたいなーとおもっても、入れるの面倒くさいというときに、とりあえず(ほぼ)何も考えず導入する手順です。

手順

  • gem入れる
  • .rubocop.ymlを作成する
  • Safe auto-correctする
  • Automatically Generated Configurationする
  • 最終確認する

gem入れる

Gemfile に下記を記述して bundle install。僕は、 rubocop-performance がお気に入りです。

group :development do
  gem 'rubocop', require: false
  gem 'rubocop-rails', require: false
  gem 'rubocop-performance', require: false
end
bundle install

.rubocop.ymlを作成する

個人的に最低限とおもわれる記述をしてした .rubocop.ymlを直下に作る

Style/AsciiComments:
  Enabled: false
Style/Documentation:
  Enabled: false
require:
  - rubocop-performance
  - rubocop-rails
AllCops:
  TargetRubyVersion: 3.0
  NewCops: enable
  Exclude:
    - 'node_modules/**/*'
    - 'log/**/*'
    - 'tmp/**/*'

Safe auto-correctする

rubocopが誤って陽性を判定しない種類の箇所を自動的に修正してくれます。とりあえず、やりましょう。
以下参照。
https://docs.rubocop.org/rubocop/usage/auto_correct.html#safe-auto-correct

rubocop -a

commitするまえに、修正箇所は1ファイルずつ修正見ましょう。直す必要はないと思いますが、重要性に応じて実行お願いします。

Automatically Generated Configurationする

修正されなかった箇所を todoとしてファイルに出力し記録します。 https://docs.rubocop.org/rubocop/configuration.html#automatically-generated-configuration

rubocop --auto-gen-config --no-exclude-limit

.rubocop_todo.yml が出力され、.rubocop.ymlに .rubocop_todo.yml を読み込むための記述が追加されます

--exclude-limit とすることで、ファイル単位でomitされます。これがないと、フォルダ単位でまるっとomitされます。あとから直すつもりがなければ無くてもいいです。
しかし後から直すつもりがあるのでしたら、どのファイルに問題があるかがわかった方がいいので、出力がおすすめです。

最終確認

下記のコマンドでエラーがないことを確認してください。

rubocop

加えて、test(rspec等)があれば実行してください。

もし、エラーが出たばあいは rubocop.ymlで Exclude: に除外したいファイルのパスを書き込んでとりあえず乗り切りましょう

Rails/TimeZone:
  Exclude:
    - '除外したいファイルパス'

最後にcommie pushして終了。これでとりあえずrubcop入りました!

Discussion