🧹

Androidでpushの前にktlintを自動で実行する

2024/03/05に公開

背景

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