-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Description
We are building custom analysis driver for golang.org/x/tools/go/analysis.
Seems like current behaviour of go vet command contradicts documentations.
This paragraph states, that each pass has access only to facts from directly imported packages.
Each pass (a, p) starts with the set of facts produced by the same analyzer a applied to the packages directly imported by p.
I would expect, that PackageVetx
section of vetx.cfg
should contain the same number of entries as the PackageFile
section.
But go vet
driver lists .vetx
files from full transitive closure of package dependencies. That seems less efficient and might cause problems with analysis scalability on large projects or in distributed build setting.
Could you please clarify, what the intended behaviour should be?
What version of Go are you using (go version
)?
$ go version go version go1.11.5 linux/amd64
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GOARCH="amd64" GOBIN="" GOCACHE="/home/prime/.cache/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/prime/Code/go" GOPROXY="" GORACE="" GOROOT="/usr/local/go" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build362922290=/tmp/go-build -gno-record-gcc-switches"
What did you do?
go vet -n bytes
What did you expect to see?
PackageVetx section of vet.cfg should list only directly imported packages.
What did you see instead?
PackageVetx contains full transitive closure of package dependencies.
"PackageVetx": { "context": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "encoding/base64": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "encoding/binary": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "errors": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "flag": "/home/prime/.cache/go-build/48/48d167f02fb6c29c9a15d692ec56e1885d291680c2cc1cc44b7b6549655c1af8-d", "fmt": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "internal/bytealg": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "internal/cpu": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "internal/poll": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "internal/race": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "internal/syscall/unix": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "internal/testlog": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "io": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "math": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "math/bits": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "math/rand": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "os": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "path/filepath": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "reflect": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "runtime": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "runtime/debug": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "runtime/internal/atomic": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "runtime/internal/sys": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "runtime/trace": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "sort": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "strconv": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "strings": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "sync": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "sync/atomic": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "syscall": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "time": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "unicode": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d", "unicode/utf8": "/home/prime/.cache/go-build/38/38d3730d3ea99899bdfe8bfbe3e1b6fb15ff67a8bc46ec86883faf956d4e9b55-d" },