おじゃまぷよ系エンジニアメモ

アプリエンジニアからサーバーとインフラエンジニアに転身しました

ktlintをpre-commitに引っ掛けてコードフォーマットする

元々php書いてて、php-cs-fixerをpre-commitでフックして整形してたなぁ…と思って最近Androidをkotlinでソース書いてるときに、同じようなやつkotlin版ないのかなぁと調べたらちゃんとありましたね。

github.com

ということでphp-cs-fixerのパターンと同様にktlintでフォーマットかけます pre-commitのscriptはこちらを参考にしました

blog.manaten.net

結果以下のようなpre-commitにしました

#!/bin/sh

if git rev-parse --verify HEAD >/dev/null 2>&1
then
    against=HEAD
else
    # Initial commit: diff against an empty tree object
    against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# Redirect output to stderr.
exec 1>&2

# コミットされるファイルのうち、.ktで終わるもの
for FILE in `git diff-index --name-status $against -- | grep -E '^[AUM].*\.kt$'| cut -c3-`; do
    /usr/local/bin/ktlint -F $FILE
    git add $FILE
done

以上でとりあえずpre-commitでktlintによるコードフォーマットが行われるのでちょっと便利