]> Cypherpunks repositories - gostls13.git/commit
cmd/go: support new hybrid coverage instrumentation
authorThan McIntosh <thanm@google.com>
Mon, 11 Oct 2021 15:26:19 +0000 (11:26 -0400)
committerThan McIntosh <thanm@google.com>
Wed, 28 Sep 2022 11:50:58 +0000 (11:50 +0000)
commit53773a5d0892be4489b4d5e91bbc8ae61000ada7
tree0d137bcb30ce27cf331d396ba82fc983a3f19c35
parentb32689f6c3156da19d469f35cc68fc155d401ef9
cmd/go: support new hybrid coverage instrumentation

If GOEXPERIMENT=coverageredesign is in effect, introduce a new
top-level '-cover' option to "go build" to turn on new-style hybrid
code coverage instrumentation. Similarly, use the new instrumentation
for "go test -cover".

The main effects of "-cover" under the hood are to instrument files at
the package level using cmd/cover and to pass additional options to
the compiler when building instrumented packages.

The previous workflow for "go tool -cover mypkg" would expand to a
series of "go tool cover" commands (one per file) followed by a single
package compilation command to build the rewritten sources.

With the new workflow, the Go command will pass all of the Go files in
a package to the cover tool as a chunk (along with a config file
containing other parameters), then the cover tool will write
instrumented versions of the sources along with another "output"
config with info on coverage variable names for the the compiler. The
Go command will then kick off the compiler on the modified source
files, also passing in the config file generated by cmd/cover.

Updates #51430.

Change-Id: Id65621ff6a8c70a30168c1412c2d6f805ff3b9e7
Reviewed-on: https://go-review.googlesource.com/c/go/+/355452
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Than McIntosh <thanm@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
23 files changed:
src/cmd/go/alldocs.go
src/cmd/go/go_test.go
src/cmd/go/internal/cfg/cfg.go
src/cmd/go/internal/help/helpdoc.go
src/cmd/go/internal/load/pkg.go
src/cmd/go/internal/load/test.go
src/cmd/go/internal/run/run.go
src/cmd/go/internal/test/cover.go
src/cmd/go/internal/test/flagdefs_test.go
src/cmd/go/internal/test/test.go
src/cmd/go/internal/test/testflag.go
src/cmd/go/internal/work/build.go
src/cmd/go/internal/work/exec.go
src/cmd/go/internal/work/gc.go
src/cmd/go/internal/work/init.go
src/cmd/go/script_test.go
src/cmd/go/testdata/script/README
src/cmd/go/testdata/script/cover_build_pkg_select.txt [new file with mode: 0644]
src/cmd/go/testdata/script/cover_build_simple.txt [new file with mode: 0644]
src/cmd/go/testdata/script/cover_test_pkgselect.txt [new file with mode: 0644]
src/testing/cover.go
src/testing/newcover.go [new file with mode: 0644]
src/testing/testing.go