Как работает go vet?

Junior
641 просмотров
AFK Offer AI

go vet — статический анализатор, находит подозрительные конструкции, которые компилируются, но скорее всего баги.

go vet ./...          # проверить всё
go vet ./internal/... # конкретный пакет

Что находит:

  • Printf: несовпадение формата и аргументов (%d для строки)
  • Копирование мьютекса: var mu2 = mu1 (mutex нельзя копировать)
  • Unreachable code: код после return
  • Shadowed variables: err := внутри if скрывает внешний err
  • Struct tags: невалидные json-теги
  • Nil function comparison: f == nil где f — функция
// go vet найдёт:
fmt.Printf("%d", "hello")  // строка с %d
var mu sync.Mutex
mu2 := mu                   // копирование mutex

go vet включён в go test по умолчанию. В CI обычно используют golangci-lint, который включает go vet + десятки других линтеров.

Следующий вопрос

Что такое starvation?