go vet

#golang #linter

Goに標準搭載されている静的解析コマンド。「コンパイラは通るが疑わしい構造」(Printfのフォーマット文字列と引数の不一致など)を報告する。ヒューリスティックベースなので、すべての報告が本物の問題であることは保証されない(公式ドキュメントも「ガイダンスとして使うべき」としている)。

go vet ./...          # パッケージを検査
go tool vet help      # 利用可能なチェック一覧
go tool vet help printf  # 特定チェックの詳細

デフォルトで全チェックが実行される。-printf=trueのように特定のチェックだけを明示すると、それ以外は無効になる。問題が見つかると非0で終了する。

チェックの例(全31種)

  • printf: フォーマット文字列と引数の整合性
  • copylocks: ロック(sync.Mutex等)を値渡ししていないか
  • loopclosure: ネストした関数からのループ変数参照
  • lostcancel: context.WithCancelのcancel関数の呼び忘れ
  • unreachable: 到達不能コード
  • structtag: structタグの構文
  • stdversion: go.modのgo directiveより新しい標準ライブラリシンボルの使用(go directiveと最小サポートバージョンの整合性チェックに使える)

Goの開発ツーリングの中での位置づけ

追加インストール不要の標準ツールとしての最小限のlint。より広範なチェックはstaticcheckgo vetと同様のインターフェースを持つ)やgolangci-lint(govetを同梱)が担う。

出典

作成日時: 2026-08-15 07:06 / 更新日時: 2026-08-15 07:06