0
0

More than 1 year has passed since last update.

差分のみRuboCopの検査をする

Last updated at Posted at 2023-04-28

pre-commitでRuboCop検査をしたいが、手を加えていない既存のコードに足を引っ張られたくはなかったため、差分のみでRuboCop検査できる方法を探した。検索に出てくるのは差分のみと言いつつ、"差分のあったファイル全体"にRuboCop検査をするものであり、期待するものではなかった。

PRで差分のみに対してRuboCop違反を自動でコメントしてくれるReviewdogがある。これをローカルで飼えば、期待する動きになるのではないかと思い試したところ、期待通りだったので記録しておく。

ReviewdogのインストールはMacを使っているためHomebrewで行う。

brew install reviewdog/tap/reviewdog

コンテナでRuboCopを動かす場合に使える、関連GemをアプリケーションのGemfile.lockのバージョンでインストールする場合のメモ。

gem install -N rubocop:$(ruby -ne 'print $& if /^\s{4}rubocop\s\(\K.*(?=\))/' Gemfile.lock) \
               rubocop-rails:$(ruby -ne 'print $& if /^\s{4}rubocop-rails\s\(\K.*(?=\))/' Gemfile.lock) \
               rubocop-performance:$(ruby -ne 'print $& if /^\s{4}rubocop-performance\s\(\K.*(?=\))/' Gemfile.lock)

これはReviewdogのaction-rubocopでそういう設定ができたので、インストール部分を参考にさせてもらった。

実行は"差分のあったファイル全体"のRuboCop検査の結果をReviewdogに食わせるだけ。

git diff --cached --name-only |\
grep -e '\.rb$' -e 'Gemfile$' -e 'Rakefile$' -e 'config\.ru$' -e '\.gemspec$' |\
xargs rubocop |\
reviewdog -f=rubocop -fail-on-error -diff="git diff --cached" -reporter=local

差分のファイルの取り方はもっといい方法があるかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0