]> Cypherpunks repositories - gostls13.git/commit
cmd/vet: switch to x/tools/go/analysis implementation
authorAlan Donovan <adonovan@google.com>
Wed, 14 Nov 2018 21:29:30 +0000 (16:29 -0500)
committerAlan Donovan <adonovan@google.com>
Thu, 15 Nov 2018 21:51:50 +0000 (21:51 +0000)
commitcb4130996fa7f73c62dafcd65a94233359fd9e09
treef3bfb568b4bcbd2fa68561d992f40178f55306e6
parentb00a6d8bfe749f90043ced2d7efb1f0b8f387ba3
cmd/vet: switch to x/tools/go/analysis implementation

This change deletes the legacy implementation of vet, replacing it
with a short main.go that merely selects the desired analyzers and
calls into the "unitchecker" implementation vendored from
golang.org/x/tools/go/analysis.

Unlike the full vet checker (x/tools/go/analysis/cmd/vet), the 'lite'
unitchecker cannot also be run standalone (as 'go tool vet' or
cmd/vet); it must be invoked by 'go vet'.
This design was chosen to avoid vendoring many
additional dependencies into GOROOT, in particular go/packages. If
go/packages should someday become part of the standard library, there
will be considerable opportunity for simplification.

This change also patches the vendored analysisflag package
(by adding patch.go) so that it fully supports the build
system's -V flag protocol.

Also:
- remove stale internal/unitchecker/ tree
  (belonged in https://go-review.googlesource.com/c/149778).
- move vet legacy flags (-all, -v, -source, -tags) into analysisflags
  as all drivers will need them, not just unitchecker.
  I will upstream this change.

A sampling of tests from the cmd/vet testsuite have been preserved as
a smoke test, to ensure that each analyzer is being run, and for
convenience when evaluating changes. Comprehensive tests for each
analyzer live upstream in x/tools. The tests have been heavily reduced
and reorganized so that they conform to the structure required by 'go
vet'.

Change-Id: I84b38caeef733e65deb95234b3b87b5f61046def
Reviewed-on: https://go-review.googlesource.com/c/149609
Reviewed-by: Russ Cox <rsc@golang.org>
94 files changed:
src/cmd/vendor/golang.org/x/tools/go/analysis/internal/analysisflags/flags.go
src/cmd/vendor/golang.org/x/tools/go/analysis/internal/analysisflags/patch.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/tools/go/analysis/internal/unitchecker/unitchecker.go [deleted file]
src/cmd/vet/asmdecl.go [deleted file]
src/cmd/vet/assign.go [deleted file]
src/cmd/vet/atomic.go [deleted file]
src/cmd/vet/bool.go [deleted file]
src/cmd/vet/buildtag.go [deleted file]
src/cmd/vet/cgo.go [deleted file]
src/cmd/vet/composite.go [deleted file]
src/cmd/vet/copylock.go [deleted file]
src/cmd/vet/dead.go [deleted file]
src/cmd/vet/deadcode.go [deleted file]
src/cmd/vet/doc.go [deleted file]
src/cmd/vet/httpresponse.go [deleted file]
src/cmd/vet/internal/cfg/builder.go [deleted file]
src/cmd/vet/internal/cfg/cfg.go [deleted file]
src/cmd/vet/internal/cfg/cfg_test.go [deleted file]
src/cmd/vet/internal/whitelist/whitelist.go [deleted file]
src/cmd/vet/lostcancel.go [deleted file]
src/cmd/vet/main.go
src/cmd/vet/method.go [deleted file]
src/cmd/vet/nilfunc.go [deleted file]
src/cmd/vet/print.go [deleted file]
src/cmd/vet/rangeloop.go [deleted file]
src/cmd/vet/shadow.go [deleted file]
src/cmd/vet/shift.go [deleted file]
src/cmd/vet/structtag.go [deleted file]
src/cmd/vet/testdata/asm/asm.go [deleted file]
src/cmd/vet/testdata/asm/asm1.s [deleted file]
src/cmd/vet/testdata/asm/asm2.s [deleted file]
src/cmd/vet/testdata/asm/asm3.s [deleted file]
src/cmd/vet/testdata/asm/asm4.s [deleted file]
src/cmd/vet/testdata/asm/asm5.s [deleted file]
src/cmd/vet/testdata/asm/asm6.s [deleted file]
src/cmd/vet/testdata/asm/asm7.s [deleted file]
src/cmd/vet/testdata/asm8.s [deleted file]
src/cmd/vet/testdata/atomic.go [deleted file]
src/cmd/vet/testdata/bool.go [deleted file]
src/cmd/vet/testdata/buildtag/buildtag_bad.go [deleted file]
src/cmd/vet/testdata/cgo/cgo.go [deleted file]
src/cmd/vet/testdata/cgo/cgo2.go [deleted file]
src/cmd/vet/testdata/cgo/cgo3.go [deleted file]
src/cmd/vet/testdata/cgo/cgo4.go [deleted file]
src/cmd/vet/testdata/composite.go [deleted file]
src/cmd/vet/testdata/copylock.go [deleted file]
src/cmd/vet/testdata/copylock_func.go [deleted file]
src/cmd/vet/testdata/copylock_range.go [deleted file]
src/cmd/vet/testdata/deadcode.go [deleted file]
src/cmd/vet/testdata/divergent/buf.go [deleted file]
src/cmd/vet/testdata/divergent/buf_test.go [deleted file]
src/cmd/vet/testdata/httpresponse.go [deleted file]
src/cmd/vet/testdata/incomplete/examples_test.go [deleted file]
src/cmd/vet/testdata/lostcancel.go [deleted file]
src/cmd/vet/testdata/nilfunc.go [deleted file]
src/cmd/vet/testdata/rangeloop.go [deleted file]
src/cmd/vet/testdata/shadow.go [deleted file]
src/cmd/vet/testdata/shift.go [deleted file]
src/cmd/vet/testdata/src/asm/asm.go [new file with mode: 0644]
src/cmd/vet/testdata/src/asm/asm1.s [new file with mode: 0644]
src/cmd/vet/testdata/src/assign/assign.go [moved from src/cmd/vet/testdata/assign.go with 97% similarity]
src/cmd/vet/testdata/src/atomic/atomic.go [new file with mode: 0644]
src/cmd/vet/testdata/src/bool/bool.go [new file with mode: 0644]
src/cmd/vet/testdata/src/buildtag/buildtag.go [moved from src/cmd/vet/testdata/buildtag/buildtag.go with 100% similarity]
src/cmd/vet/testdata/src/cgo/cgo.go [new file with mode: 0644]
src/cmd/vet/testdata/src/composite/composite.go [new file with mode: 0644]
src/cmd/vet/testdata/src/copylock/copylock.go [new file with mode: 0644]
src/cmd/vet/testdata/src/deadcode/deadcode.go [new file with mode: 0644]
src/cmd/vet/testdata/src/httpresponse/httpresponse.go [new file with mode: 0644]
src/cmd/vet/testdata/src/lostcancel/lostcancel.go [new file with mode: 0644]
src/cmd/vet/testdata/src/method/method.go [moved from src/cmd/vet/testdata/method.go with 62% similarity]
src/cmd/vet/testdata/src/nilfunc/nilfunc.go [new file with mode: 0644]
src/cmd/vet/testdata/src/print/print.go [moved from src/cmd/vet/testdata/print.go with 94% similarity]
src/cmd/vet/testdata/src/rangeloop/rangeloop.go [new file with mode: 0644]
src/cmd/vet/testdata/src/shift/shift.go [new file with mode: 0644]
src/cmd/vet/testdata/src/structtag/structtag.go [new file with mode: 0644]
src/cmd/vet/testdata/src/tagtest/file1.go [moved from src/cmd/vet/testdata/tagtest/file1.go with 85% similarity]
src/cmd/vet/testdata/src/tagtest/file2.go [moved from src/cmd/vet/testdata/tagtest/file2.go with 80% similarity]
src/cmd/vet/testdata/src/testingpkg/tests.go [moved from src/cmd/vet/testdata/testingpkg/tests.go with 100% similarity]
src/cmd/vet/testdata/src/testingpkg/tests_test.go [new file with mode: 0644]
src/cmd/vet/testdata/src/unmarshal/unmarshal.go [new file with mode: 0644]
src/cmd/vet/testdata/src/unsafeptr/unsafeptr.go [new file with mode: 0644]
src/cmd/vet/testdata/src/unused/unused.go [new file with mode: 0644]
src/cmd/vet/testdata/structtag.go [deleted file]
src/cmd/vet/testdata/testingpkg/tests_test.go [deleted file]
src/cmd/vet/testdata/unmarshal.go [deleted file]
src/cmd/vet/testdata/unsafeptr.go [deleted file]
src/cmd/vet/testdata/unused.go [deleted file]
src/cmd/vet/tests.go [deleted file]
src/cmd/vet/types.go [deleted file]
src/cmd/vet/unmarshal.go [deleted file]
src/cmd/vet/unsafeptr.go [deleted file]
src/cmd/vet/unused.go [deleted file]
src/cmd/vet/vet_test.go