RubyコードをRubocopを使って静的に解析していますが、それを自動化するべくGitフックにしました。
下記の内容の.git/hooks/pre-commitファイルを作ります。
.git/hooks/pre-commit
#!/bin/sh
git diff --cached --name-only --diff-filter=AM | grep '\.rb$' | xargs rubocop
exit $?
grep '\.rb$'
で拡張子が rb
であるファイル、という意味なので、必要に応じてこの部分を変更してください。例えば app
ディレクトリ以下のみにしたければ ^app/.*\.rb$
にします。
忘れずに実行権限をつけます。
chmod +x .git/hooks/pre-commit
すると git-commit
時に自動的に追加・変更されたRubyファイルに対してRubocopが走るようになります。Rubocopに通らないとコミットできません
背景
Ruby - Rubocopをsyntasticを使ってVimから自動実行する - Qiita でVimからRubocopを使うようにしたのはいいけど、保存の度に一瞬Vimが止まってしまうのが非常にストレスフルだったので、Gitフックに移動させたのでした。