RuboCopの解析結果をPull Requestにコメントするのをやめた
弊社ではprontoというライブラリを使って、RuboCopによる静的解析の結果をPull Request(以下PR)にコメントして自動コードレビュー的なことをしていた1。これをつい最近やめた。理由は下記の2つ。
理由1: フィードバックに意味がない
RubocopがPRのページに残す「メソッドの行数が長すぎる」などの指摘は、今のチームでは多くの場合トレードオフを踏まえた意図的な判断であり、改めてそれをコメントで指摘する意味はさほどない2。
理由2: 人間が指摘を受けて直すのは無駄
RuboCopは多くの違反を自動修正できる。弊社ではこの機能を使い、Jenkinsから定期的に自動修正をかけてPRを出している。自動で修正できるにも関わらずコードフォーマットに対する指摘を人間が修正することは、その行為に副次的な価値が有る場合を除き時間の無駄である3。
自動修正のやり方
下記のスクリプトをJenkinsから定期実行している。要hub。
#! /bin/bash -xe
bundle
bundle exec rubocop --auto-correct $(git ls-files | grep -E -v "^(db|bin)" | grep "\.rb$") || true
git diff --exit-code && exit 0
git add .
timestamp=`date +'%Y%m%d%H%M'`
commit_comment="rubocop --auto-correct $timestamp"
git commit -m "$commit_comment"
git checkout -b rubocop-auto-correct-$timestamp
branch_name=`git name-rev --name-only HEAD`
git push -u origin $branch_name
hub pull-request -m "$commit_comment" -h proper-inc:$branch_name
まとめ
ということで、RuboCopでPRにコメントするのはやめて、RuboCopの自動修正のみ活用するようになった。自動修正でコードのお行儀的には及第点まで持っていける感触です。コードフォーマットが揃っているとノイズが少なくて読むのがかなり楽になる。ちなみにESlintとCSScombも同じように使ってお行儀を維持しています。