diff --git a/cmd/vet/doc.go b/cmd/vet/doc.go index dd6f6b59f..621f85e17 100644 --- a/cmd/vet/doc.go +++ b/cmd/vet/doc.go @@ -9,6 +9,11 @@ calls whose arguments do not align with the format string. Vet uses heuristics that do not guarantee all reports are genuine problems, but it can find errors not caught by the compilers. +Usage: + + go tool vet [flag] [file.go ...] + go tool vet [flag] [directory ...] # Scan all .go files under directory, recursively + Its exit code is 2 for erroneous invocation of the tool, 1 if a problem was reported, and 0 otherwise. Note that the tool does not check every possible problem and depends on unreliable heuristics @@ -20,7 +25,9 @@ those identified by the flags are performed. Available checks: -1. Printf family, flag -printf +1. Printf family + +Flag -printf Suspicious calls to functions in the Printf family, including any functions with these names: @@ -37,7 +44,9 @@ complains about arguments that look like format descriptor strings. It also checks for errors such as using a Writer as the first argument of Printf. -2. Methods, flag -methods +2. Methods + +Flag -methods Non-standard signatures for methods with familiar names, including: Format GobEncode GobDecode MarshalJSON MarshalXML @@ -45,21 +54,79 @@ Non-standard signatures for methods with familiar names, including: UnmarshalJSON UnreadByte UnreadRune WriteByte WriteTo -3. Struct tags, flag -structtags +3. Struct tags + +Flag -structtags Struct tags that do not follow the format understood by reflect.StructTag.Get. -4. Unkeyed composite literals, flag -composites +4. Unkeyed composite literals + +Flag -composites Composite struct literals that do not use the field-keyed syntax. +5. Assembly declarations -Usage: +Flag -asmdecl - go tool vet [flag] [file.go ...] - go tool vet [flag] [directory ...] # Scan all .go files under directory, recursively +Mismatches between assembly files and Go function declarations. -The other flags are: +6. Useless assignments + +Flag -assign + +Check for useless assignments. + +7. Atomic mistakes + +Flag -atomic + +Common mistaken usages of the sync/atomic package. + +8. Build tags + +Flag -buildtags + +Badly formed or misplaced +build tags. + +9. Copying locks + +Flag -copylocks + +Locks that are erroneously passed by value. + +10. Nil function comparison + +Flag -nilfunc + +Comparisons between functions and nil. + +11. Range loop variables + +Flag -rangeloops + +Incorrect uses of range loop variables in closures. + +12. Unreachable code + +Flag -unreachable + +Unreachable code. + +13. Shadowed variables + +Flag -shadow=false (experimental; must be set explicitly) + +Variables that may have been unintentionally shadowed. + + +Other flags + +These flags configure the behavior of vet: + + -all (default true) + Check everything; disabled if any explicit check is requested. -v Verbose mode -printfuncs @@ -71,6 +138,9 @@ The other flags are: if you have Warn and Warnf functions that take an io.Writer as their first argument, like Fprintf, -printfuncs=Warn:1,Warnf:1 - + -shadowstrict + Whether to be strict about shadowing; can be noisy. + -test + For testing only: sets -all and -shadow. */ package main