概要
先日、Github が Super Linter という機能についてブログ記事をアップしました。
Github側で、各言語とかのLinterを用意してくれるので、それをGithub Actionsで簡単に設定できてコードベースにlintできちゃうよって感じです。
確かに便利そうなので、ちょっと触ってみました。
テスト用のリポジトリ作る
試す用のリポジトリを用意。
出来たてホヤホヤで、まだ何もなしです。

試すだけなので、全部ブラウザでやります。
とりあえずコードを初期アップ
lint してもらうコードが必要なので、以下を用意します。
- go.mod
- hello.go
コードは hello world 出力しているだけです。
package main import ( "fmt" ) func main() { fmt.Println("hello go") }
ブラウザで Create New File のところ押して、ポチポチつくって以下な感じになりました。

これで下準備は完了です。
Super Linter 用の GitHub Action を追加
Super Linter は、Github Action で動くので、追加します。
Actions タブをクリックすると、まだ一つもGitHub Actions を登録していないので

という感じで表示されますが、 set up a workflow yourself ってリンクを押して次に進みます。
すると、main.yml という形でアクションを作るエディタが表示されますので、私の場合は以下のように調整しました。
- main.yml を linter.yml に変更
- yaml の内容を super-linter の README.md に記載されている内容に変更
こんな感じになりました。

んで、linter.yml をコミット。
これで、GitHub Super Linter が master 以外のブランチでPUSHされたら、動作してくれるはず。
試してみる
てことで、最初に作った hello world な コード を以下のように lint で引っかかるようにわざと調整します。
package main import ( "fmt" ) func main() { fmt.Println("hello go") i := 10 fmt.Printf("i = %s\n", i) }
変数 i の型は int なのに、fmt.Printf で %s を指定しています。
このようなコードは、例えば go vet とかで以下のように出力されます。
Printf format %s has arg i of wrong type int
これが引っかかることを期待して、ブラウザ上からブランチ作ってプルリク出します。
プルリクを作ると、ちゃんとさっき設定して GitHub Action が動き出して

少しすると、無事 lint に引っかかりました。

Details というリンクをクリックして、詳細を見てみましょう。


ちゃんと出てますね。てことで直しましょう。
修正して再度 lint してもらう
%s を %d に変更して、コミット。
そうすると、さっきのプルリクに対してまた lint が走ります。


今度はOKになりました。てことで、このプルリクをマージして完了という感じですね。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場