]> Cypherpunks repositories - gostls13.git/commit
cmd/cover: add hybrid instrumentation mode
authorThan McIntosh <thanm@google.com>
Thu, 10 Mar 2022 20:06:43 +0000 (15:06 -0500)
committerThan McIntosh <thanm@google.com>
Wed, 28 Sep 2022 11:48:40 +0000 (11:48 +0000)
commit5f18e4632897769f2abf80332c39b526697d1a1c
tree0274eec63d9a92c8ccc9cea4ca3620709fd5c5a4
parent87db4ffadac291bc878cb892e05601610ca68ef5
cmd/cover: add hybrid instrumentation mode

Add a new mode of coverage instrumentation that works as a hybrid
between purely tool-based and purely compiler-based. The cmd/cover
tool still does source-to-source rewriting, but it also generates
information to be used by the compiler to do things like marking
meta-data vars as read-only.

In hybrid mode, the cmd/cover tool is invoked not on a single source
file but on all the files in a package, and is passed a config file
containing the import path of the package in question, along with
other parameters needed for the run. It writes a series of modified
files and an output config file to be passed to the compiler when
compiling the modified files.

Not completely useful by itself, still needs a corresponding set of
changes in the Go command and in the compiler.

Updates #51430.

Change-Id: I0fcbd93a9a8fc25064187b159152486a2549ea54
Reviewed-on: https://go-review.googlesource.com/c/go/+/395896
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/cmd/cover/cfg_test.go [new file with mode: 0644]
src/cmd/cover/cover.go
src/cmd/cover/cover_test.go
src/cmd/cover/doc.go
src/cmd/cover/testdata/pkgcfg/a/a.go [new file with mode: 0644]
src/cmd/cover/testdata/pkgcfg/a/a2.go [new file with mode: 0644]
src/cmd/cover/testdata/pkgcfg/a/a_test.go [new file with mode: 0644]
src/cmd/cover/testdata/pkgcfg/b/b.go [new file with mode: 0644]
src/cmd/cover/testdata/pkgcfg/b/b_test.go [new file with mode: 0644]
src/cmd/cover/testdata/pkgcfg/go.mod [new file with mode: 0644]
src/cmd/cover/testdata/pkgcfg/main/main.go [new file with mode: 0644]