タイトルのままですが、lintを導入してみたので備忘録がてらにやったことを残しておきます。
この記事を書いたときのver
% ruby --version
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]
% bundle list
* rubocop (1.64.1)
* rubocop-ast (1.31.3)
* rubocop-capybara (2.20.0)
* rubocop-factory_bot (2.25.1)
* rubocop-performance (1.21.0)
* rubocop-rails (2.25.0)
* rubocop-rake (0.6.0)
* rubocop-rspec (2.29.2)
* rubocop-rspec_rails (2.28.3)
やったこと
1. install
Gemfileに下記を追記して「bundle install」。
rubocop以外はお好みで。
gem 'rubocop'
gem 'rubocop-ast'
gem 'rubocop-performance'
gem 'rubocop-rails'
gem 'rubocop-rake'
gem 'rubocop-rspec'
2. lintの設定ファイルを作成
# rubocopの設定ファイルを作成
% bundle exec rubocop --auto-gen-config
こちらを叩くと次の2ファイルが生成される。
- .robocop_todo.yml: 無視する内容のlintを記載するファイル。
- .robocop.yml: rubocopで適用する設定を記載
この設定ファイルを自動生成したときではその時点でlintが通るような設定になっている。
適当なrubyファイルを作ってたら「.robocop_todo.yml」にくどくどと現状のコードで間違っているlintの内容が書いてある。
また、先ほどinstallしたrubocopの拡張ライブラリを指定しておく。(好みで指定する。)
.robocop.yml
inherit_from: .rubocop_todo.yml
require:
- rubocop-ast
- rubocop-performance
- rubocop-rspec
- rubocop-rails
- rubocop-rake
3. 間違ってるlintを直す、または不要なlintはfalseにする。
.robocop_todo.yml に記載のlintを一個一個直す。
その時に下記で自動で修正してくれるので活用する。
# lintを自動修正
% bundle exec rubocop -A
また、ソースコード内で指定されているlintが不要だと判断したら.robocop.yml でfalseに指定する。
例: Style/FrozenStringLiteralComment を指定しない。
Style/FrozenStringLiteralComment:
Enabled: false
4. ゴール
最終的に.robocop_todo.yml を空にして、lintが通ってたらおわり。
# 現在のlintを確認
bundle exec rubocop
おわり
初めてrubyのlintに触ったのですが指定多いと感じました。めちゃドバドバ指摘されてびびった。
ちょっと調べてみたらプロジェクトごとになんらかfalseにしている感じっぽい。
うーん、なんか不要そうなニッチなlintはライブラリの中にひとまとめにしてそもそもインストールするか選ぶ的な感じにしてほしい気がしないでもない。( ・∇・)
あと一番わかりにくいと思ったのが「.robocop_todo.yml」の存在。。
これtodoというか、errorとかの方が名前適切じゃないか?todo言われても間違ってる設定ってわかりにくい気が。( ・∇・)