Help us understand the problem. What is going on with this article?

RuboCopは自動修正のみ使うと捗る

More than 3 years have passed since last update.

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の自動修正のみ活用するようになった。自動修正でコードのお行儀的には及第点まで持っていける感触です。コードフォーマットが揃っているとノイズが少なくて読むのがかなり楽になる。ちなみにESlintCSScombも同じように使ってお行儀を維持しています。

おまけ


  1. 設定はonkcopをカスタマイズしたもの。 

  2. 教育的な効果が必要な場合はあるかも。 

  3. 同上 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした