go/src/cmd/vet
Josh Bleecher Snyder 7fa3b79ce5 cmd/vet/all: print all unparseable lines
In my experience, this usually happens when vet panics.
Dumping all unparseable lines should help diagnosis.

Inspired by the trybot failures in CL 40511.

Change-Id: Ib73e8c8b2942832589c3cc5d33ef35fdafe9965a
Reviewed-on: https://go-review.googlesource.com/40508
Reviewed-by: Rob Pike <r@golang.org>
2017-04-13 14:05:34 +00:00
..
all cmd/vet/all: print all unparseable lines 2017-04-13 14:05:34 +00:00
internal
testdata cmd/vet: check shift calculations with "unsafe" package 2017-03-13 22:30:27 +00:00
README
asmdecl.go cmd/vet: use types.SizesFor 2017-03-02 17:13:36 +00:00
assign.go
atomic.go
bool.go
buildtag.go
cgo.go cmd/vet: avoid crash in cgo test on recursive type 2016-12-21 04:29:31 +00:00
composite.go
copylock.go cmd/vet: include function name or value in copylock message 2017-01-03 19:23:23 +00:00
deadcode.go
doc.go cmd/vet: support importing from source 2017-03-02 18:43:23 +00:00
httpresponse.go cmd/vet: refactor to support alternative importers 2017-03-02 18:43:12 +00:00
lostcancel.go cmd/vet: -lostcancel: fix crash in ill-typed code 2017-03-22 17:04:35 +00:00
main.go cmd/go: allow full flag processing in go vet 2017-04-10 15:10:30 +00:00
method.go cmd/vet: remove Peek from list of canonical methods 2017-03-27 23:36:36 +00:00
nilfunc.go
print.go
rangeloop.go
shadow.go
shift.go cmd/vet: check shift calculations with "unsafe" package 2017-03-13 22:30:27 +00:00
structtag.go cmd/vet: fix panic and handling of XML in struct field tag check 2016-12-13 03:13:24 +00:00
tests.go
types.go cmd/vet: eliminate "might be too small for shift" warnings 2017-03-11 15:29:30 +00:00
unsafeptr.go
unused.go
vet_test.go cmd/vet: avoid crash in cgo test on recursive type 2016-12-21 04:29:31 +00:00

README

Vet is a tool that checks correctness of Go programs. It runs a suite of tests,
each tailored to check for a particular class of errors. Examples include incorrect
Printf format verbs or malformed build tags.

Over time many checks have been added to vet's suite, but many more have been
rejected as not appropriate for the tool. The criteria applied when selecting which
checks to add are:

Correctness:

Vet's tools are about correctness, not style. A vet check must identify real or
potential bugs that could cause incorrect compilation or execution. A check that
only identifies stylistic points or alternative correct approaches to a situation
is not acceptable.

Frequency:

Vet is run every day by many programmers, often as part of every compilation or
submission. The cost in execution time is considerable, especially in aggregate,
so checks must be likely enough to find real problems that they are worth the
overhead of the added check. A new check that finds only a handful of problems
across all existing programs, even if the problem is significant, is not worth
adding to the suite everyone runs daily.

Precision:

Most of vet's checks are heuristic and can generate both false positives (flagging
correct programs) and false negatives (not flagging incorrect ones). The rate of
both these failures must be very small. A check that is too noisy will be ignored
by the programmer overwhelmed by the output; a check that misses too many of the
cases it's looking for will give a false sense of security. Neither is acceptable.
A vet check must be accurate enough that everything it reports is worth examining,
and complete enough to encourage real confidence.