Edited at

Rubocopで設定に違反するコードを直してhubでプルリクエストを出す

More than 1 year has passed since last update.

Rubocopは--auto-fixというオプションがあって、これを使うと違反を自動で直してくれます。Rubocopが警告できる違反の全てが直るわけではないですが、結構直ります。

これを自動化して定期実行すると一定レベルのコードの治安が担保され、より心穏やかに開発できます。弊社では下記のようなシェルスクリプトをJenkinsから実行して、定期的にプルリクエストを出しています。

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 your-company:$branch_name

いきなり導入すると大量の自動修正が出てしまうので不安です。Rubocopはバージョンによって誤審することもあるので1、油断なりません。なので、導入時はディレクトリを指定するなどして、少しずつ修正していくのがよいかと思います。一度全体に自動修正がかかった状態になるとそれ以降の差分は小さくなり(当たり前ですが…)、レビューも簡単になります。

継続的にコードの品質を維持する仕組みとして大変便利なので、是非試してみてください。