golangでディレクトリまるごとgo vet&testしたいとき!
golangを書いているとコード担保のために
go test
コマンドやgo vet
コマンドをしますよね??
僕はjenkinsで自動テストをしているのですが、そのときにディレクトリ(プロジェクト)まるごと
go test
コマンドやgo vet
コマンドしたいときってどうするんだ?
と思ったので調べました!
小技だと思いますが、知っといて損はないかと思います。
結論
結論から書くと以下のコマンドで実現できます!
# cdコマンドで対象ディレクトリ(プロジェクト)に移動 # vetしたいとき go vet ./... # testしたいとき go test ./...
./...
というのがミソで、このコマンドがプロジェクト(ディレクトリ)まるごと指定しているようです。
実際にやってみた
6ファイルほどgoファイルがあるプロジェクトを対象にvetしたいと思います。
今回は検証のためにわざとmain2.goとmain3.goにエラーが起こるようにしています。
# ファイル構成の確認 [~/Documents/workSpace_intellij/go-sample] % tree (git)-[master] . ├── README.md ├── main.go ├── main_1.go ├── main_2.go ├── main_3.go ├── main_4.go └── main_5.go # ディレクトリ(プロジェクト)まるごとvet % go vet ./... (git)-[master] main_2.go:82: unreachable code main_3.go:16: struct field tag `json:text` not compatible with reflect.StructTag.Get: bad syntax for struct tag value exit status 1
期待通りにmain2.goとmain3.goにエラーが起こりましたね!
想定どおり全てのファイルにvetがかかっています。
おわり!!