エンジニアはこわくない

好きなように書く

golangでディレクトリまるごとgo vet&testしたいとき!


スポンサーリンク

f:id:tsujitaku50:20170224131252j:plain

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がかかっています。

おわり!!