Danger x Android Lint
自分は仕事ではAndroidアプリの開発もしています。
Android Lintも使っていて、danger/dangerとloadsmart/danger-android_lintを組み合わせて、Pull RequestにLint結果を表示するという、一般にも使われていそうな方法で利用しています。
danger-android_lintの問題点
Dangerはすごく便利なのだけど、Lintからの指摘とDangerfileに指定したルールからの指摘とが混在してしまうのは、情報が多くなりがちで、目が滑るのが気がかりでした。
Dangerからの指摘には、Project specificな情報やレビュー上で確認必須なルールをDangerfileに指定して、Lintの情報は別にまとめたい。
GitHub Action for SwiftLint
ところで、最近はGitHub Actionsが時流らしいし、自分もaction.ymlを書くのにだいぶ慣れてきました。
Swiftだとnorio-nomura/action-swiftlintを使うと、GitHub Actionsで簡単にrealm/SwiftLintが実行できます。
norio-nomura/action-swiftlintのいいところは、実行が簡単なだけではありません。
Workflow commandsのwarningとerrorを使って、Review CommentのようにPull Requestの対応コードにLint結果を表示します。
これが最高に便利。
ということで、Android Lint版を作った
やっていることは単純で、Android Lintで生成されたxmlをparseして、Workflow commandの形式に変換して echo
しているだけです。
mobileposse/github-android-lint-action *1を参考にさせてもらいつつ、Annotationの表示にはWorkflow commandsを使うようにすることで、GitHub のaccess tokenが不要になっています。
追加機能の予定
Android Lintが生成する lint-results.xml
に載っている情報を全部使えているわけではないので、もう少しはアップデートしようと思っています。
id
とか priority
のフィルタリング機能とか。
あとは、このActionだけでAndroid Lintの実行までを行うようにすると嬉しいのかどうか...
まとめ
フィードバックをぜひお願いします!
みなさんもぜひ便利なGitHub Actionsを作って、公開してください!!!
[おまけ] GitHub Actionを作る
今回のActionは、xmlのparseして、 echo
するだけで、環境依存はありません。
よって、Javascript actionで作りました。
かつ、型がある方が嬉しい*2ので、actions/typescript-actionをTemplateにして、作成を始めました。
TypeScriptを久々に触りながら、出来上がりを優先して作っているので、クオリティはいまいちかもしれませんが、テストはちゃんと書いているので、ある程度の品質は担保できているはず。
READMEとaction.ymlの情報で、Marketplaceに公開されます。
Update action.yml for branding · yutailang0119/action-android-lint@f183f3c · GitHub