Go版本
go版本:go1.22.0 windows/amd64
在你的模块/工作区中go env
的输出:
GO111MODULE=on
GOARCH=amd64
GOBIN=
GOCACHE=C:\Users\astoffels\AppData\Local\go-build
GOENV=C:\Users\astoffels\AppData\Roaming\go\env
GOEXE=.exe
GOEXPERIMENT=
GOFLAGS=
GOHOSTARCH=amd64
GOHOSTOS=windows
GOINSECURE=
GOMODCACHE=C:\Source\golang\pkg\mod
GONOPROXY=
GONOSUMDB=
GOOS=windows
GOPATH=C:\Source\golang
GOPRIVATE=
GOPROXY=https://proxy.golang.org,direct
GOROOT=C:/Program Files/Go
GOSUMDB=sum.golang.org
GOTMPDIR=
GOTOOLCHAIN=auto
GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
GOVCS=
GOVERSION=go1.22.0
GCCGO=gccgo
GOAMD64=v1
AR=ar
CC=gcc
CXX=g++
CGO_ENABLED=0
GOMOD=C:\Source\golang\src\coverageRepro\go.mod
GOWORK=
CGO_CFLAGS=-O2 -g
CGO_CPPFLAGS=
CGO_CXXFLAGS=-O2 -g
CGO_FFLAGS=-O2 -g
CGO_LDFLAGS=-O2 -g
PKG_CONFIG=pkg-config
GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\ASTOFF~1\AppData\Local\Temp\go-build2371241097=/tmp/go-build -gno-record-gcc-switches
你做了什么?
克隆了https://github.com/alainstoffels/coverageRepro
在仓库的根目录下运行:go test -cover -coverpkg=./... -coverprofile=coverage.out ./...
你看到了什么发生?
coverage.out现在包含了2行关于coverageRepro/bar/bar.go
的内容。一行表示它没有被覆盖,另一行表示它被覆盖了:
mode: set
coverageRepro/bar/bar.go:3.12,5.2 1 0
coverageRepro/bar/bar.go:3.12,5.2 1 1
coverageRepro/foo/foo.go:5.12,7.2 1 1
foo.Foo()
调用了bar.Bar()
,所以foo.TestFoo()
应该覆盖bar.Bar()
。
你期望看到什么?
我期望它为coverageRepro/bar/bar.go
输出一行,表示它被覆盖了,就像在1.22更新之前一样:
mode: set
coverageRepro/bar/bar.go:3.12,5.2 1 1
coverageRepro/foo/foo.go:5.12,7.2 1 1
4条答案
按热度按时间41zrol4v1#
In our codebase, this has caused our coverage file to increase from 260 MB to 1.53 GB.
Also, it's likely that this is related to #65570
xfyts7mz2#
GOEXPERIMENT=nocoverageredesign go test -cover -coverpkg=./... -coverprofile=coverage.out ./...
是否解决了这个问题?如果是,那么它也与覆盖范围的重新设计(这似乎很有可能)有关。qyzbxkaa3#
GOEXPERIMENT=nocoverageredesign go test -cover -coverpkg=./... -coverprofile=coverage.out ./...
是否解决了这个问题?如果是,那么它也与覆盖范围的重新设计(这似乎很有可能)有关。这确实解决了问题。
js5cn81o4#
从我所看到的,这种行为在覆盖重新设计工作之前就已经存在了(我在Go 1.19中看到了它)。
这里有一个例子:
在没有进行覆盖重新设计的情况下,顶部也有类似的行为: