четверг, 18 июля 2019 г.

Команда vet в Golang

vet проверяет исходный код Go и сообщает о подозрительных конструкциях, таких как вызовы Printf, аргументы которых не совпадают с форматом строки. vet использует эвристику, которая не гарантирует, что все отчеты являются подлинными проблемами, но он может найти ошибки, не обнаруженные компиляторами.

Vet обычно вызывается с помощью команды go. Эта команда проверяет пакет в текущем каталоге:

go vet

тогда как следующий пример проверяет пакеты, путь которых указан:

go vet my/project/...

Используйте go help packages, чтобы увидеть другие способы указания, какие пакеты проверять.

Код выхода vet не равен нулю для ошибочного вызова инструмента или, если возникла проблема, и 0 в противном случае. Обратите внимание, что инструмент проверяет не все возможные проблемы и зависит от ненадежной эвристики, поэтому его следует использовать только в качестве руководства, а не в качестве надежного индикатора правильности программы.

Чтобы просмотреть список доступных проверок, запустите "go tool vet help":

asmdecl      сообщить несоответствия между сборочными 
             файлами (assembly files) и Go декларациями

assign       проверить на бесполезные назначения

atomic       проверить на общие ошибки 
             используемые в sync/atomic пакете

bools        проверить на общие ошибки 
             затрагивающие булевы (boolean) операторы

buildtag     проверить что +build теги 
             правильно сформированы и корректно размещены

cgocall      выявить некоторые из нарушений 
             правил передачи cgo указателей

composites   проверить на композитные литералы без ключей 
             (unkeyed composite literals)

copylocks    проверить на locks 
             ошибочно переданные по значению

httpresponse проверить на ошибки использования HTTP ответов

loopclosure  проверить запросы на прохождение циклом 
             по переменным из вложенных функций

lostcancel   проверить cancel функции 
             возвращенные context.WithCancel при вызове

nilfunc      проверить на бесполезные сравнения 
             между функциями и nil

printf       проверить соответствие 
             строк и аргументов формата Printf

shift        проверить на сдвиги которые равны 
             или превосходят ширину целых чисел

stdmethods   проверить сигнатуры методов 
             хорошо известных интерфейсов

structtag    проверить что теги полей структур 
             соответствуют reflect.StructTag.Get

tests        проверить на общие ошибочные 
             использования тестов и примеров

unmarshal    сообщить о передаче unmarshal значений 
             не-указателей или не-интерфейсов 

unreachable  проверить на наличие недостижимого кода

unsafeptr    проверить на невалидные преобразования 
             uintptr в unsafe.Pointer

unusedresult проверить на неиспользуемые результаты 
             вызовов некоторых функций

Для получения подробной информации и флагов конкретной проверки, например printf, запустите "go tool vet help printf".

По умолчанию все проверки выполняются. Если для каких-либо флагов явно задано значение true, запускаются только эти тесты. И наоборот, если какой-либо флаг явно установлен в false, только эти тесты отключаются. Таким образом -printf=true запускает проверку printf, а -printf=false запускает все проверки, кроме проверки printf.

Основные флаги:

-c=N
    отображать проблемные строки 
    плюс N строк окружающего контекста
-json
    выводить аналитическую диагностику 
    (и ошибки) в формате JSON


Читайте также:


Комментариев нет:

Отправить комментарий