go/analysisで
This content is a draft and will not be included in production builds.
go vet に含まれているリンターは go vet で実行して、カスタムリンターは x/tools/go/analysis 以下のチェッカーを使って自分でコマンドを作るらしい。x/tools/go/analysis 以下には主に3つのチェッカーがある。
- singlechecker
- multichecker
- unitchecker
singlechecker と multichecker は名前の通り。unitchecker はビルド時に一度だけ動作する?よくわからない。
以下は multichecker の簡単な例。
//go:build lint
package main
import ( "golang.org/x/tools/go/analysis/multichecker")
func main() { multichecker.Main()}go vet は go test を実行すれば動くけど、このときは一部のリンターしか動作しない。全部のリンターを動作させたい場合は go test -vet=all オプションを加える。
x/tools/go/analysis/passes以下に go vet 関連のリンターが集まっている。