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