🧹
Androidでpushの前にktlintを自動で実行する
背景
pushした後に、GitHub Actionsなどの CIでktlintなどのエラーが起こった場合、
5-10分気づくまでにラグが発生してしまうので、
ローカルで事前にktlintのチェックをしてからpushするようにしたいと思いました。
試行錯誤して書いたpre-push
最初はpre-commitに ktlintFormatを実行するのを入れていたのですが、
commitの度にすごく待たされてしまうので、やめました。
最終的に、push時に、チェックを走らせて、自動修正するようにしました。
ただ、自動修正後に、変更をすべてcommitしてよいかは状況によるので、
自動修正までして、そこで動作を止めるようにしました。
pre-push
#!/bin/sh
# ktlint を実行してコードスタイルの問題をチェック
if ! ./gradlew ktlint; then
# 問題が見つかった場合、自動修正を試みる
./gradlew ktlintFormat
exit 1
fi
exit 0
なので、挙動としては、
- もし、フォーマットエラーがあった場合
- フォーマットを自動修正してエラーで終了 (pushしない)
- フォーマットエラーがない場合
- pushして終了。
というイメージです。
Discussion