Skip to content

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

singlecheckermultichecker は名前の通り。unitchecker はビルド時に一度だけ動作する?よくわからない。

以下は multichecker の簡単な例。

//go:build lint
package main
import (
"golang.org/x/tools/go/analysis/multichecker"
)
func main() {
multichecker.Main()
}

go vetgo test を実行すれば動くけど、このときは一部のリンターしか動作しない。全部のリンターを動作させたい場合は go test -vet=all オプションを加える。

x/tools/go/analysis/passes以下に go vet 関連のリンターが集まっている。