mirror of
https://github.com/golang/go
synced 2024-11-15 00:40:31 -07:00
cmd/go: remove checks that all counters incremented are in counters.txt
This change removes cmd/go/testdata/counters.txt. It also removes the code that prepares it and checks that it contains all registered counters as well as counters for all flags and subcommands. It removes the counter registration mechanism, and uses telemetry.NewCounter to create new counters instead. It keeps the tests that check that at least one counter is incremented if the go command is invoked in a script test. Change-Id: Ic6bda5c64e90f0dd7e221968fce0e375e84d6e17 Cq-Include-Trybots: luci.golang.try:gotip-windows-amd64-longtest,gotip-linux-amd64-longtest Reviewed-on: https://go-review.googlesource.com/c/go/+/582715 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Sam Thanawalla <samthanawalla@google.com>
This commit is contained in:
parent
7b5206bdf3
commit
23f760fd58
@ -1,140 +0,0 @@
|
||||
// Copyright 2024 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main_test
|
||||
|
||||
import (
|
||||
"cmd/go/internal/base"
|
||||
"cmd/go/internal/cfg"
|
||||
"flag"
|
||||
"go/build"
|
||||
"internal/diff"
|
||||
"os"
|
||||
"slices"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var update = flag.Bool("update", false, "if true update testdata/counternames.txt")
|
||||
|
||||
func TestCounterNamesUpToDate(t *testing.T) {
|
||||
if !*update {
|
||||
t.Parallel()
|
||||
}
|
||||
|
||||
var counters []string
|
||||
// -C is a special case because it's handled by handleChdirFlag rather than
|
||||
// standard flag processing with FlagSets.
|
||||
// go/subcommand:unknown is also a special case: it's used when the subcommand
|
||||
// doesn't match any of the known commands.
|
||||
counters = append(counters, "go/flag:C", "go/subcommand:unknown")
|
||||
counters = append(counters, flagscounters("go/flag:", *flag.CommandLine)...)
|
||||
|
||||
// Add help (without any arguments) as a special case. cmdcounters adds go help <cmd>
|
||||
// for all subcommands, but it's also valid to invoke go help without any arguments.
|
||||
counters = append(counters, "go/subcommand:help")
|
||||
for _, cmd := range base.Go.Commands {
|
||||
cmdcounters, err := cmdcounters(nil, cmd)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
counters = append(counters, cmdcounters...)
|
||||
}
|
||||
|
||||
counters = append(counters, base.RegisteredCounterNames()...)
|
||||
for _, c := range counters {
|
||||
const counterPrefix = "go/"
|
||||
if !strings.HasPrefix(c, counterPrefix) {
|
||||
t.Fatalf("registered counter %q does not start with %q", c, counterPrefix)
|
||||
}
|
||||
}
|
||||
|
||||
cstr := []byte(strings.Join(counters, "\n") + "\n")
|
||||
const counterNamesFile = "testdata/counters.txt"
|
||||
old, err := os.ReadFile(counterNamesFile)
|
||||
if err != nil {
|
||||
t.Fatalf("error reading %s: %v", counterNamesFile, err)
|
||||
}
|
||||
diff := diff.Diff(counterNamesFile, old, "generated counter names", cstr)
|
||||
if diff == nil {
|
||||
t.Logf("%s is up to date.", counterNamesFile)
|
||||
return
|
||||
}
|
||||
|
||||
if *update {
|
||||
if err := os.WriteFile(counterNamesFile, cstr, 0666); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Logf("wrote %d bytes to %s", len(cstr), counterNamesFile)
|
||||
t.Logf("don't forget to file a proposal to update the list of collected counters")
|
||||
} else {
|
||||
t.Logf("\n%s", diff)
|
||||
t.Errorf("%s is stale. To update, run 'go generate cmd/go'.", counterNamesFile)
|
||||
}
|
||||
}
|
||||
|
||||
func flagscounters(prefix string, flagSet flag.FlagSet) []string {
|
||||
var counters []string
|
||||
flagSet.VisitAll(func(f *flag.Flag) {
|
||||
counters = append(counters, prefix+f.Name)
|
||||
})
|
||||
return counters
|
||||
}
|
||||
|
||||
func cmdcounters(previous []string, cmd *base.Command) ([]string, error) {
|
||||
const subcommandPrefix = "go/subcommand:"
|
||||
const flagPrefix = "go/flag:"
|
||||
var counters []string
|
||||
previousComponent := strings.Join(previous, "-")
|
||||
if len(previousComponent) > 0 {
|
||||
previousComponent += "-"
|
||||
}
|
||||
if cmd.Runnable() {
|
||||
if cmd.Name() == "tool" {
|
||||
// TODO(matloob): Do we expect the same tools to be present on all
|
||||
// platforms/configurations? Should we only run this on certain
|
||||
// platforms?
|
||||
tools, err := toolNames()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, t := range tools {
|
||||
counters = append(counters, subcommandPrefix+previousComponent+cmd.Name()+"-"+t)
|
||||
}
|
||||
counters = append(counters, subcommandPrefix+previousComponent+cmd.Name()+"-unknown")
|
||||
}
|
||||
counters = append(counters, subcommandPrefix+previousComponent+cmd.Name())
|
||||
}
|
||||
counters = append(counters, flagscounters(flagPrefix+previousComponent+cmd.Name()+"-", cmd.Flag)...)
|
||||
if len(previous) != 0 {
|
||||
counters = append(counters, subcommandPrefix+previousComponent+"help-"+cmd.Name())
|
||||
}
|
||||
counters = append(counters, subcommandPrefix+"help-"+previousComponent+cmd.Name())
|
||||
|
||||
for _, subcmd := range cmd.Commands {
|
||||
subcmdcounters, err := cmdcounters(append(slices.Clone(previous), cmd.Name()), subcmd)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
counters = append(counters, subcmdcounters...)
|
||||
}
|
||||
return counters, nil
|
||||
}
|
||||
|
||||
// toolNames returns the list of basenames of executables in the tool dir.
|
||||
func toolNames() ([]string, error) {
|
||||
entries, err := os.ReadDir(build.ToolDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var names []string
|
||||
for _, e := range entries {
|
||||
if e.IsDir() {
|
||||
continue
|
||||
}
|
||||
name := strings.TrimSuffix(e.Name(), cfg.ToolExeSuffix())
|
||||
names = append(names, name)
|
||||
}
|
||||
return names, nil
|
||||
}
|
@ -7,7 +7,6 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"cmd/internal/telemetry"
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
@ -15,7 +14,6 @@ import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
@ -223,28 +221,3 @@ func RunStdin(cmdline []string) {
|
||||
// Usage is the usage-reporting function, filled in by package main
|
||||
// but here for reference by other packages.
|
||||
var Usage func()
|
||||
|
||||
var counterNames = map[string]bool{}
|
||||
|
||||
type Counter interface {
|
||||
Inc()
|
||||
}
|
||||
|
||||
// NewCounter registers a new counter. It must be called from an init function
|
||||
// or global variable initializer.
|
||||
func NewCounter(name string) Counter {
|
||||
if counterNames[name] {
|
||||
panic(fmt.Errorf("counter %q initialized twice", name))
|
||||
}
|
||||
counterNames[name] = true
|
||||
return telemetry.NewCounter(name)
|
||||
}
|
||||
|
||||
func RegisteredCounterNames() []string {
|
||||
var names []string
|
||||
for name := range counterNames {
|
||||
names = append(names, name)
|
||||
}
|
||||
sort.Strings(names)
|
||||
return names
|
||||
}
|
||||
|
@ -16,9 +16,10 @@ import (
|
||||
"unicode/utf8"
|
||||
|
||||
"cmd/go/internal/base"
|
||||
"cmd/internal/telemetry"
|
||||
)
|
||||
|
||||
var counterErrorsHelpUnknownTopic = base.NewCounter("go/errors:help-unknown-topic")
|
||||
var counterErrorsHelpUnknownTopic = telemetry.NewCounter("go/errors:help-unknown-topic")
|
||||
|
||||
// Help implements the 'help' command.
|
||||
func Help(w io.Writer, args []string) {
|
||||
|
@ -26,6 +26,7 @@ import (
|
||||
"cmd/go/internal/modfetch/codehost"
|
||||
"cmd/go/internal/par"
|
||||
"cmd/go/internal/robustio"
|
||||
"cmd/internal/telemetry"
|
||||
|
||||
"golang.org/x/mod/module"
|
||||
"golang.org/x/mod/semver"
|
||||
@ -778,7 +779,7 @@ var (
|
||||
statCacheOnce sync.Once
|
||||
statCacheErr error
|
||||
|
||||
counterErrorsGOMODCACHEEntryRelative = base.NewCounter("go/errors:gomodcache-entry-relative")
|
||||
counterErrorsGOMODCACHEEntryRelative = telemetry.NewCounter("go/errors:gomodcache-entry-relative")
|
||||
)
|
||||
|
||||
// checkCacheDir checks if the directory specified by GOMODCACHE exists. An
|
||||
|
@ -26,6 +26,7 @@ import (
|
||||
"cmd/go/internal/modload"
|
||||
"cmd/go/internal/run"
|
||||
"cmd/go/internal/work"
|
||||
"cmd/internal/telemetry"
|
||||
|
||||
"golang.org/x/mod/module"
|
||||
)
|
||||
@ -81,7 +82,7 @@ func FilterEnv(env []string) []string {
|
||||
return out
|
||||
}
|
||||
|
||||
var counterErrorsInvalidToolchainInFile = base.NewCounter("go/errors:invalid-toolchain-in-file")
|
||||
var counterErrorsInvalidToolchainInFile = telemetry.NewCounter("go/errors:invalid-toolchain-in-file")
|
||||
|
||||
// Select invokes a different Go toolchain if directed by
|
||||
// the GOTOOLCHAIN environment variable or the user's configuration
|
||||
@ -245,7 +246,7 @@ func Select() {
|
||||
Exec(gotoolchain)
|
||||
}
|
||||
|
||||
var counterSelectExec = base.NewCounter("go/toolchain/select-exec")
|
||||
var counterSelectExec = telemetry.NewCounter("go/toolchain/select-exec")
|
||||
|
||||
// TestVersionSwitch is set in the test go binary to the value in $TESTGO_VERSION_SWITCH.
|
||||
// Valid settings are:
|
||||
|
@ -16,6 +16,7 @@ import (
|
||||
"cmd/go/internal/cfg"
|
||||
"cmd/go/internal/gover"
|
||||
"cmd/go/internal/modfetch"
|
||||
"cmd/internal/telemetry"
|
||||
)
|
||||
|
||||
// A Switcher collects errors to be reported and then decides
|
||||
@ -103,7 +104,7 @@ func (s *Switcher) Switch(ctx context.Context) {
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
var counterSwitchExec = base.NewCounter("go/toolchain/switch-exec")
|
||||
var counterSwitchExec = telemetry.NewCounter("go/toolchain/switch-exec")
|
||||
|
||||
// SwitchOrFatal attempts a toolchain switch based on the information in err
|
||||
// and otherwise falls back to base.Fatal(err).
|
||||
|
@ -3,12 +3,10 @@
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:generate go test cmd/go -v -run=^TestDocsUpToDate$ -fixdocs
|
||||
//go:generate go test cmd/go -v -run=^TestCounterNamesUpToDate$ -update
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"cmd/internal/telemetry"
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
@ -44,6 +42,7 @@ import (
|
||||
"cmd/go/internal/vet"
|
||||
"cmd/go/internal/work"
|
||||
"cmd/go/internal/workcmd"
|
||||
"cmd/internal/telemetry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -89,7 +88,7 @@ func init() {
|
||||
|
||||
var _ = go11tag
|
||||
|
||||
var counterErrorsGOPATHEntryRelative = base.NewCounter("go/errors:gopath-entry-relative")
|
||||
var counterErrorsGOPATHEntryRelative = telemetry.NewCounter("go/errors:gopath-entry-relative")
|
||||
|
||||
func main() {
|
||||
log.SetFlags(0)
|
||||
|
@ -22,7 +22,6 @@ import (
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -395,32 +394,13 @@ func readCounters(t *testing.T, telemetryDir string) map[string]uint64 {
|
||||
return totals
|
||||
}
|
||||
|
||||
//go:embed testdata/counters.txt
|
||||
var countersTxt string
|
||||
|
||||
var (
|
||||
allowedCountersOnce sync.Once
|
||||
allowedCounters = map[string]bool{} // Set of allowed counters.
|
||||
)
|
||||
|
||||
func checkCounters(t *testing.T, telemetryDir string) {
|
||||
allowedCountersOnce.Do(func() {
|
||||
for _, counter := range strings.Fields(countersTxt) {
|
||||
allowedCounters[counter] = true
|
||||
}
|
||||
})
|
||||
counters := readCounters(t, telemetryDir)
|
||||
if _, ok := scriptGoInvoked.Load(testing.TB(t)); ok {
|
||||
if !disabledOnPlatform && len(counters) == 0 {
|
||||
t.Fatal("go was invoked but no counters were incremented")
|
||||
}
|
||||
}
|
||||
for name := range counters {
|
||||
if !allowedCounters[name] {
|
||||
t.Fatalf("incremented counter %q is not in testdata/counters.txt. "+
|
||||
"Please update counters_test.go to produce an entry for it.", name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Copied from https://go.googlesource.com/telemetry/+/5f08a0cbff3f/internal/telemetry/mode.go#122
|
||||
|
689
src/cmd/go/testdata/counters.txt
vendored
689
src/cmd/go/testdata/counters.txt
vendored
@ -1,689 +0,0 @@
|
||||
go/flag:C
|
||||
go/subcommand:unknown
|
||||
go/flag:fixdocs
|
||||
go/flag:fixreadme
|
||||
go/flag:flaky
|
||||
go/flag:proxy
|
||||
go/flag:test.bench
|
||||
go/flag:test.benchmem
|
||||
go/flag:test.benchtime
|
||||
go/flag:test.blockprofile
|
||||
go/flag:test.blockprofilerate
|
||||
go/flag:test.count
|
||||
go/flag:test.coverprofile
|
||||
go/flag:test.cpu
|
||||
go/flag:test.cpuprofile
|
||||
go/flag:test.failfast
|
||||
go/flag:test.fullpath
|
||||
go/flag:test.fuzz
|
||||
go/flag:test.fuzzcachedir
|
||||
go/flag:test.fuzzminimizetime
|
||||
go/flag:test.fuzztime
|
||||
go/flag:test.fuzzworker
|
||||
go/flag:test.gocoverdir
|
||||
go/flag:test.list
|
||||
go/flag:test.memprofile
|
||||
go/flag:test.memprofilerate
|
||||
go/flag:test.mutexprofile
|
||||
go/flag:test.mutexprofilefraction
|
||||
go/flag:test.outputdir
|
||||
go/flag:test.paniconexit0
|
||||
go/flag:test.parallel
|
||||
go/flag:test.run
|
||||
go/flag:test.short
|
||||
go/flag:test.shuffle
|
||||
go/flag:test.skip
|
||||
go/flag:test.testlogfile
|
||||
go/flag:test.timeout
|
||||
go/flag:test.trace
|
||||
go/flag:test.v
|
||||
go/flag:testsum
|
||||
go/flag:testwork
|
||||
go/flag:update
|
||||
go/subcommand:help
|
||||
go/subcommand:bug
|
||||
go/flag:bug-C
|
||||
go/flag:bug-v
|
||||
go/subcommand:help-bug
|
||||
go/subcommand:build
|
||||
go/flag:build-C
|
||||
go/flag:build-a
|
||||
go/flag:build-asan
|
||||
go/flag:build-asmflags
|
||||
go/flag:build-buildmode
|
||||
go/flag:build-buildvcs
|
||||
go/flag:build-compiler
|
||||
go/flag:build-cover
|
||||
go/flag:build-covermode
|
||||
go/flag:build-coverpkg
|
||||
go/flag:build-debug-actiongraph
|
||||
go/flag:build-debug-runtime-trace
|
||||
go/flag:build-debug-trace
|
||||
go/flag:build-gccgoflags
|
||||
go/flag:build-gcflags
|
||||
go/flag:build-installsuffix
|
||||
go/flag:build-ldflags
|
||||
go/flag:build-linkshared
|
||||
go/flag:build-mod
|
||||
go/flag:build-modcacherw
|
||||
go/flag:build-modfile
|
||||
go/flag:build-msan
|
||||
go/flag:build-n
|
||||
go/flag:build-o
|
||||
go/flag:build-overlay
|
||||
go/flag:build-p
|
||||
go/flag:build-pgo
|
||||
go/flag:build-pkgdir
|
||||
go/flag:build-race
|
||||
go/flag:build-tags
|
||||
go/flag:build-toolexec
|
||||
go/flag:build-trimpath
|
||||
go/flag:build-v
|
||||
go/flag:build-work
|
||||
go/flag:build-x
|
||||
go/subcommand:help-build
|
||||
go/subcommand:clean
|
||||
go/flag:clean-C
|
||||
go/flag:clean-a
|
||||
go/flag:clean-asan
|
||||
go/flag:clean-asmflags
|
||||
go/flag:clean-buildmode
|
||||
go/flag:clean-buildvcs
|
||||
go/flag:clean-cache
|
||||
go/flag:clean-compiler
|
||||
go/flag:clean-debug-actiongraph
|
||||
go/flag:clean-debug-runtime-trace
|
||||
go/flag:clean-debug-trace
|
||||
go/flag:clean-fuzzcache
|
||||
go/flag:clean-gccgoflags
|
||||
go/flag:clean-gcflags
|
||||
go/flag:clean-i
|
||||
go/flag:clean-installsuffix
|
||||
go/flag:clean-ldflags
|
||||
go/flag:clean-linkshared
|
||||
go/flag:clean-mod
|
||||
go/flag:clean-modcache
|
||||
go/flag:clean-modcacherw
|
||||
go/flag:clean-modfile
|
||||
go/flag:clean-msan
|
||||
go/flag:clean-n
|
||||
go/flag:clean-overlay
|
||||
go/flag:clean-p
|
||||
go/flag:clean-pgo
|
||||
go/flag:clean-pkgdir
|
||||
go/flag:clean-r
|
||||
go/flag:clean-race
|
||||
go/flag:clean-tags
|
||||
go/flag:clean-testcache
|
||||
go/flag:clean-toolexec
|
||||
go/flag:clean-trimpath
|
||||
go/flag:clean-v
|
||||
go/flag:clean-work
|
||||
go/flag:clean-x
|
||||
go/subcommand:help-clean
|
||||
go/subcommand:doc
|
||||
go/subcommand:help-doc
|
||||
go/subcommand:env
|
||||
go/flag:env-C
|
||||
go/flag:env-json
|
||||
go/flag:env-n
|
||||
go/flag:env-u
|
||||
go/flag:env-w
|
||||
go/flag:env-x
|
||||
go/subcommand:help-env
|
||||
go/subcommand:fix
|
||||
go/flag:fix-C
|
||||
go/flag:fix-a
|
||||
go/flag:fix-asan
|
||||
go/flag:fix-asmflags
|
||||
go/flag:fix-buildmode
|
||||
go/flag:fix-buildvcs
|
||||
go/flag:fix-compiler
|
||||
go/flag:fix-debug-actiongraph
|
||||
go/flag:fix-debug-runtime-trace
|
||||
go/flag:fix-debug-trace
|
||||
go/flag:fix-fix
|
||||
go/flag:fix-gccgoflags
|
||||
go/flag:fix-gcflags
|
||||
go/flag:fix-installsuffix
|
||||
go/flag:fix-ldflags
|
||||
go/flag:fix-linkshared
|
||||
go/flag:fix-mod
|
||||
go/flag:fix-modcacherw
|
||||
go/flag:fix-modfile
|
||||
go/flag:fix-msan
|
||||
go/flag:fix-n
|
||||
go/flag:fix-overlay
|
||||
go/flag:fix-p
|
||||
go/flag:fix-pgo
|
||||
go/flag:fix-pkgdir
|
||||
go/flag:fix-race
|
||||
go/flag:fix-tags
|
||||
go/flag:fix-toolexec
|
||||
go/flag:fix-trimpath
|
||||
go/flag:fix-v
|
||||
go/flag:fix-work
|
||||
go/flag:fix-x
|
||||
go/subcommand:help-fix
|
||||
go/subcommand:fmt
|
||||
go/flag:fmt-C
|
||||
go/flag:fmt-mod
|
||||
go/flag:fmt-modcacherw
|
||||
go/flag:fmt-modfile
|
||||
go/flag:fmt-n
|
||||
go/flag:fmt-overlay
|
||||
go/flag:fmt-x
|
||||
go/subcommand:help-fmt
|
||||
go/subcommand:generate
|
||||
go/flag:generate-C
|
||||
go/flag:generate-a
|
||||
go/flag:generate-asan
|
||||
go/flag:generate-asmflags
|
||||
go/flag:generate-buildmode
|
||||
go/flag:generate-buildvcs
|
||||
go/flag:generate-compiler
|
||||
go/flag:generate-debug-actiongraph
|
||||
go/flag:generate-debug-runtime-trace
|
||||
go/flag:generate-debug-trace
|
||||
go/flag:generate-gccgoflags
|
||||
go/flag:generate-gcflags
|
||||
go/flag:generate-installsuffix
|
||||
go/flag:generate-ldflags
|
||||
go/flag:generate-linkshared
|
||||
go/flag:generate-mod
|
||||
go/flag:generate-modcacherw
|
||||
go/flag:generate-modfile
|
||||
go/flag:generate-msan
|
||||
go/flag:generate-n
|
||||
go/flag:generate-overlay
|
||||
go/flag:generate-p
|
||||
go/flag:generate-pgo
|
||||
go/flag:generate-pkgdir
|
||||
go/flag:generate-race
|
||||
go/flag:generate-run
|
||||
go/flag:generate-skip
|
||||
go/flag:generate-tags
|
||||
go/flag:generate-toolexec
|
||||
go/flag:generate-trimpath
|
||||
go/flag:generate-v
|
||||
go/flag:generate-work
|
||||
go/flag:generate-x
|
||||
go/subcommand:help-generate
|
||||
go/subcommand:get
|
||||
go/flag:get-C
|
||||
go/flag:get-a
|
||||
go/flag:get-asan
|
||||
go/flag:get-asmflags
|
||||
go/flag:get-buildmode
|
||||
go/flag:get-buildvcs
|
||||
go/flag:get-compiler
|
||||
go/flag:get-d
|
||||
go/flag:get-debug-actiongraph
|
||||
go/flag:get-debug-runtime-trace
|
||||
go/flag:get-debug-trace
|
||||
go/flag:get-f
|
||||
go/flag:get-fix
|
||||
go/flag:get-gccgoflags
|
||||
go/flag:get-gcflags
|
||||
go/flag:get-insecure
|
||||
go/flag:get-installsuffix
|
||||
go/flag:get-ldflags
|
||||
go/flag:get-linkshared
|
||||
go/flag:get-m
|
||||
go/flag:get-modcacherw
|
||||
go/flag:get-modfile
|
||||
go/flag:get-msan
|
||||
go/flag:get-n
|
||||
go/flag:get-overlay
|
||||
go/flag:get-p
|
||||
go/flag:get-pgo
|
||||
go/flag:get-pkgdir
|
||||
go/flag:get-race
|
||||
go/flag:get-t
|
||||
go/flag:get-tags
|
||||
go/flag:get-toolexec
|
||||
go/flag:get-trimpath
|
||||
go/flag:get-u
|
||||
go/flag:get-v
|
||||
go/flag:get-work
|
||||
go/flag:get-x
|
||||
go/subcommand:help-get
|
||||
go/subcommand:install
|
||||
go/flag:install-C
|
||||
go/flag:install-a
|
||||
go/flag:install-asan
|
||||
go/flag:install-asmflags
|
||||
go/flag:install-buildmode
|
||||
go/flag:install-buildvcs
|
||||
go/flag:install-compiler
|
||||
go/flag:install-cover
|
||||
go/flag:install-covermode
|
||||
go/flag:install-coverpkg
|
||||
go/flag:install-debug-actiongraph
|
||||
go/flag:install-debug-runtime-trace
|
||||
go/flag:install-debug-trace
|
||||
go/flag:install-gccgoflags
|
||||
go/flag:install-gcflags
|
||||
go/flag:install-installsuffix
|
||||
go/flag:install-ldflags
|
||||
go/flag:install-linkshared
|
||||
go/flag:install-mod
|
||||
go/flag:install-modcacherw
|
||||
go/flag:install-modfile
|
||||
go/flag:install-msan
|
||||
go/flag:install-n
|
||||
go/flag:install-overlay
|
||||
go/flag:install-p
|
||||
go/flag:install-pgo
|
||||
go/flag:install-pkgdir
|
||||
go/flag:install-race
|
||||
go/flag:install-tags
|
||||
go/flag:install-toolexec
|
||||
go/flag:install-trimpath
|
||||
go/flag:install-v
|
||||
go/flag:install-work
|
||||
go/flag:install-x
|
||||
go/subcommand:help-install
|
||||
go/subcommand:list
|
||||
go/flag:list-C
|
||||
go/flag:list-a
|
||||
go/flag:list-asan
|
||||
go/flag:list-asmflags
|
||||
go/flag:list-buildmode
|
||||
go/flag:list-buildvcs
|
||||
go/flag:list-compiled
|
||||
go/flag:list-compiler
|
||||
go/flag:list-cover
|
||||
go/flag:list-covermode
|
||||
go/flag:list-coverpkg
|
||||
go/flag:list-debug-actiongraph
|
||||
go/flag:list-debug-runtime-trace
|
||||
go/flag:list-debug-trace
|
||||
go/flag:list-deps
|
||||
go/flag:list-e
|
||||
go/flag:list-export
|
||||
go/flag:list-f
|
||||
go/flag:list-find
|
||||
go/flag:list-gccgoflags
|
||||
go/flag:list-gcflags
|
||||
go/flag:list-installsuffix
|
||||
go/flag:list-json
|
||||
go/flag:list-ldflags
|
||||
go/flag:list-linkshared
|
||||
go/flag:list-m
|
||||
go/flag:list-mod
|
||||
go/flag:list-modcacherw
|
||||
go/flag:list-modfile
|
||||
go/flag:list-msan
|
||||
go/flag:list-n
|
||||
go/flag:list-overlay
|
||||
go/flag:list-p
|
||||
go/flag:list-pgo
|
||||
go/flag:list-pkgdir
|
||||
go/flag:list-race
|
||||
go/flag:list-retracted
|
||||
go/flag:list-reuse
|
||||
go/flag:list-tags
|
||||
go/flag:list-test
|
||||
go/flag:list-toolexec
|
||||
go/flag:list-trimpath
|
||||
go/flag:list-u
|
||||
go/flag:list-v
|
||||
go/flag:list-versions
|
||||
go/flag:list-work
|
||||
go/flag:list-x
|
||||
go/subcommand:help-list
|
||||
go/subcommand:help-mod
|
||||
go/subcommand:mod-download
|
||||
go/flag:mod-download-C
|
||||
go/flag:mod-download-json
|
||||
go/flag:mod-download-modcacherw
|
||||
go/flag:mod-download-modfile
|
||||
go/flag:mod-download-overlay
|
||||
go/flag:mod-download-reuse
|
||||
go/flag:mod-download-x
|
||||
go/subcommand:mod-help-download
|
||||
go/subcommand:help-mod-download
|
||||
go/subcommand:mod-edit
|
||||
go/flag:mod-edit-C
|
||||
go/flag:mod-edit-dropexclude
|
||||
go/flag:mod-edit-dropreplace
|
||||
go/flag:mod-edit-droprequire
|
||||
go/flag:mod-edit-dropretract
|
||||
go/flag:mod-edit-exclude
|
||||
go/flag:mod-edit-fmt
|
||||
go/flag:mod-edit-go
|
||||
go/flag:mod-edit-json
|
||||
go/flag:mod-edit-modcacherw
|
||||
go/flag:mod-edit-modfile
|
||||
go/flag:mod-edit-module
|
||||
go/flag:mod-edit-n
|
||||
go/flag:mod-edit-overlay
|
||||
go/flag:mod-edit-print
|
||||
go/flag:mod-edit-replace
|
||||
go/flag:mod-edit-require
|
||||
go/flag:mod-edit-retract
|
||||
go/flag:mod-edit-toolchain
|
||||
go/flag:mod-edit-x
|
||||
go/subcommand:mod-help-edit
|
||||
go/subcommand:help-mod-edit
|
||||
go/subcommand:mod-graph
|
||||
go/flag:mod-graph-C
|
||||
go/flag:mod-graph-go
|
||||
go/flag:mod-graph-modcacherw
|
||||
go/flag:mod-graph-modfile
|
||||
go/flag:mod-graph-overlay
|
||||
go/flag:mod-graph-x
|
||||
go/subcommand:mod-help-graph
|
||||
go/subcommand:help-mod-graph
|
||||
go/subcommand:mod-init
|
||||
go/flag:mod-init-C
|
||||
go/flag:mod-init-modcacherw
|
||||
go/flag:mod-init-modfile
|
||||
go/flag:mod-init-overlay
|
||||
go/subcommand:mod-help-init
|
||||
go/subcommand:help-mod-init
|
||||
go/subcommand:mod-tidy
|
||||
go/flag:mod-tidy-C
|
||||
go/flag:mod-tidy-compat
|
||||
go/flag:mod-tidy-e
|
||||
go/flag:mod-tidy-go
|
||||
go/flag:mod-tidy-modcacherw
|
||||
go/flag:mod-tidy-modfile
|
||||
go/flag:mod-tidy-overlay
|
||||
go/flag:mod-tidy-v
|
||||
go/flag:mod-tidy-x
|
||||
go/subcommand:mod-help-tidy
|
||||
go/subcommand:help-mod-tidy
|
||||
go/subcommand:mod-vendor
|
||||
go/flag:mod-vendor-C
|
||||
go/flag:mod-vendor-e
|
||||
go/flag:mod-vendor-modcacherw
|
||||
go/flag:mod-vendor-modfile
|
||||
go/flag:mod-vendor-o
|
||||
go/flag:mod-vendor-overlay
|
||||
go/flag:mod-vendor-v
|
||||
go/subcommand:mod-help-vendor
|
||||
go/subcommand:help-mod-vendor
|
||||
go/subcommand:mod-verify
|
||||
go/flag:mod-verify-C
|
||||
go/flag:mod-verify-modcacherw
|
||||
go/flag:mod-verify-modfile
|
||||
go/flag:mod-verify-overlay
|
||||
go/subcommand:mod-help-verify
|
||||
go/subcommand:help-mod-verify
|
||||
go/subcommand:mod-why
|
||||
go/flag:mod-why-C
|
||||
go/flag:mod-why-m
|
||||
go/flag:mod-why-modcacherw
|
||||
go/flag:mod-why-modfile
|
||||
go/flag:mod-why-overlay
|
||||
go/flag:mod-why-vendor
|
||||
go/subcommand:mod-help-why
|
||||
go/subcommand:help-mod-why
|
||||
go/subcommand:help-work
|
||||
go/subcommand:work-edit
|
||||
go/flag:work-edit-C
|
||||
go/flag:work-edit-dropreplace
|
||||
go/flag:work-edit-dropuse
|
||||
go/flag:work-edit-fmt
|
||||
go/flag:work-edit-go
|
||||
go/flag:work-edit-json
|
||||
go/flag:work-edit-print
|
||||
go/flag:work-edit-replace
|
||||
go/flag:work-edit-toolchain
|
||||
go/flag:work-edit-use
|
||||
go/subcommand:work-help-edit
|
||||
go/subcommand:help-work-edit
|
||||
go/subcommand:work-init
|
||||
go/flag:work-init-C
|
||||
go/flag:work-init-modcacherw
|
||||
go/flag:work-init-modfile
|
||||
go/flag:work-init-overlay
|
||||
go/subcommand:work-help-init
|
||||
go/subcommand:help-work-init
|
||||
go/subcommand:work-sync
|
||||
go/flag:work-sync-C
|
||||
go/flag:work-sync-modcacherw
|
||||
go/flag:work-sync-modfile
|
||||
go/flag:work-sync-overlay
|
||||
go/subcommand:work-help-sync
|
||||
go/subcommand:help-work-sync
|
||||
go/subcommand:work-use
|
||||
go/flag:work-use-C
|
||||
go/flag:work-use-modcacherw
|
||||
go/flag:work-use-modfile
|
||||
go/flag:work-use-overlay
|
||||
go/flag:work-use-r
|
||||
go/subcommand:work-help-use
|
||||
go/subcommand:help-work-use
|
||||
go/subcommand:work-vendor
|
||||
go/flag:work-vendor-C
|
||||
go/flag:work-vendor-e
|
||||
go/flag:work-vendor-modcacherw
|
||||
go/flag:work-vendor-modfile
|
||||
go/flag:work-vendor-o
|
||||
go/flag:work-vendor-overlay
|
||||
go/flag:work-vendor-v
|
||||
go/subcommand:work-help-vendor
|
||||
go/subcommand:help-work-vendor
|
||||
go/subcommand:run
|
||||
go/flag:run-C
|
||||
go/flag:run-a
|
||||
go/flag:run-asan
|
||||
go/flag:run-asmflags
|
||||
go/flag:run-buildmode
|
||||
go/flag:run-buildvcs
|
||||
go/flag:run-compiler
|
||||
go/flag:run-cover
|
||||
go/flag:run-covermode
|
||||
go/flag:run-coverpkg
|
||||
go/flag:run-debug-actiongraph
|
||||
go/flag:run-debug-runtime-trace
|
||||
go/flag:run-debug-trace
|
||||
go/flag:run-exec
|
||||
go/flag:run-gccgoflags
|
||||
go/flag:run-gcflags
|
||||
go/flag:run-installsuffix
|
||||
go/flag:run-ldflags
|
||||
go/flag:run-linkshared
|
||||
go/flag:run-mod
|
||||
go/flag:run-modcacherw
|
||||
go/flag:run-modfile
|
||||
go/flag:run-msan
|
||||
go/flag:run-n
|
||||
go/flag:run-overlay
|
||||
go/flag:run-p
|
||||
go/flag:run-pgo
|
||||
go/flag:run-pkgdir
|
||||
go/flag:run-race
|
||||
go/flag:run-tags
|
||||
go/flag:run-toolexec
|
||||
go/flag:run-trimpath
|
||||
go/flag:run-v
|
||||
go/flag:run-work
|
||||
go/flag:run-x
|
||||
go/subcommand:help-run
|
||||
go/subcommand:test
|
||||
go/flag:test-C
|
||||
go/flag:test-a
|
||||
go/flag:test-asan
|
||||
go/flag:test-asmflags
|
||||
go/flag:test-bench
|
||||
go/flag:test-benchmem
|
||||
go/flag:test-benchtime
|
||||
go/flag:test-blockprofile
|
||||
go/flag:test-blockprofilerate
|
||||
go/flag:test-buildmode
|
||||
go/flag:test-buildvcs
|
||||
go/flag:test-c
|
||||
go/flag:test-compiler
|
||||
go/flag:test-count
|
||||
go/flag:test-cover
|
||||
go/flag:test-covermode
|
||||
go/flag:test-coverpkg
|
||||
go/flag:test-coverprofile
|
||||
go/flag:test-cpu
|
||||
go/flag:test-cpuprofile
|
||||
go/flag:test-debug-actiongraph
|
||||
go/flag:test-debug-runtime-trace
|
||||
go/flag:test-debug-trace
|
||||
go/flag:test-exec
|
||||
go/flag:test-failfast
|
||||
go/flag:test-fullpath
|
||||
go/flag:test-fuzz
|
||||
go/flag:test-fuzzminimizetime
|
||||
go/flag:test-fuzztime
|
||||
go/flag:test-gccgoflags
|
||||
go/flag:test-gcflags
|
||||
go/flag:test-installsuffix
|
||||
go/flag:test-json
|
||||
go/flag:test-ldflags
|
||||
go/flag:test-linkshared
|
||||
go/flag:test-list
|
||||
go/flag:test-memprofile
|
||||
go/flag:test-memprofilerate
|
||||
go/flag:test-mod
|
||||
go/flag:test-modcacherw
|
||||
go/flag:test-modfile
|
||||
go/flag:test-msan
|
||||
go/flag:test-mutexprofile
|
||||
go/flag:test-mutexprofilefraction
|
||||
go/flag:test-n
|
||||
go/flag:test-o
|
||||
go/flag:test-outputdir
|
||||
go/flag:test-overlay
|
||||
go/flag:test-p
|
||||
go/flag:test-parallel
|
||||
go/flag:test-pgo
|
||||
go/flag:test-pkgdir
|
||||
go/flag:test-race
|
||||
go/flag:test-run
|
||||
go/flag:test-short
|
||||
go/flag:test-shuffle
|
||||
go/flag:test-skip
|
||||
go/flag:test-tags
|
||||
go/flag:test-test.bench
|
||||
go/flag:test-test.benchmem
|
||||
go/flag:test-test.benchtime
|
||||
go/flag:test-test.blockprofile
|
||||
go/flag:test-test.blockprofilerate
|
||||
go/flag:test-test.count
|
||||
go/flag:test-test.coverprofile
|
||||
go/flag:test-test.cpu
|
||||
go/flag:test-test.cpuprofile
|
||||
go/flag:test-test.failfast
|
||||
go/flag:test-test.fullpath
|
||||
go/flag:test-test.fuzz
|
||||
go/flag:test-test.fuzzminimizetime
|
||||
go/flag:test-test.fuzztime
|
||||
go/flag:test-test.list
|
||||
go/flag:test-test.memprofile
|
||||
go/flag:test-test.memprofilerate
|
||||
go/flag:test-test.mutexprofile
|
||||
go/flag:test-test.mutexprofilefraction
|
||||
go/flag:test-test.outputdir
|
||||
go/flag:test-test.parallel
|
||||
go/flag:test-test.run
|
||||
go/flag:test-test.short
|
||||
go/flag:test-test.shuffle
|
||||
go/flag:test-test.skip
|
||||
go/flag:test-test.timeout
|
||||
go/flag:test-test.trace
|
||||
go/flag:test-test.v
|
||||
go/flag:test-timeout
|
||||
go/flag:test-toolexec
|
||||
go/flag:test-trace
|
||||
go/flag:test-trimpath
|
||||
go/flag:test-v
|
||||
go/flag:test-vet
|
||||
go/flag:test-work
|
||||
go/flag:test-x
|
||||
go/subcommand:help-test
|
||||
go/subcommand:tool-addr2line
|
||||
go/subcommand:tool-asm
|
||||
go/subcommand:tool-buildid
|
||||
go/subcommand:tool-cgo
|
||||
go/subcommand:tool-compile
|
||||
go/subcommand:tool-covdata
|
||||
go/subcommand:tool-cover
|
||||
go/subcommand:tool-dist
|
||||
go/subcommand:tool-distpack
|
||||
go/subcommand:tool-doc
|
||||
go/subcommand:tool-fix
|
||||
go/subcommand:tool-link
|
||||
go/subcommand:tool-nm
|
||||
go/subcommand:tool-objdump
|
||||
go/subcommand:tool-pack
|
||||
go/subcommand:tool-pprof
|
||||
go/subcommand:tool-preprofile
|
||||
go/subcommand:tool-test2json
|
||||
go/subcommand:tool-trace
|
||||
go/subcommand:tool-vet
|
||||
go/subcommand:tool-unknown
|
||||
go/subcommand:tool
|
||||
go/flag:tool-C
|
||||
go/flag:tool-n
|
||||
go/subcommand:help-tool
|
||||
go/subcommand:version
|
||||
go/flag:version-C
|
||||
go/flag:version-m
|
||||
go/flag:version-v
|
||||
go/subcommand:help-version
|
||||
go/subcommand:vet
|
||||
go/flag:vet-C
|
||||
go/flag:vet-a
|
||||
go/flag:vet-asan
|
||||
go/flag:vet-asmflags
|
||||
go/flag:vet-buildmode
|
||||
go/flag:vet-buildvcs
|
||||
go/flag:vet-compiler
|
||||
go/flag:vet-debug-actiongraph
|
||||
go/flag:vet-debug-runtime-trace
|
||||
go/flag:vet-debug-trace
|
||||
go/flag:vet-gccgoflags
|
||||
go/flag:vet-gcflags
|
||||
go/flag:vet-installsuffix
|
||||
go/flag:vet-ldflags
|
||||
go/flag:vet-linkshared
|
||||
go/flag:vet-mod
|
||||
go/flag:vet-modcacherw
|
||||
go/flag:vet-modfile
|
||||
go/flag:vet-msan
|
||||
go/flag:vet-n
|
||||
go/flag:vet-overlay
|
||||
go/flag:vet-p
|
||||
go/flag:vet-pgo
|
||||
go/flag:vet-pkgdir
|
||||
go/flag:vet-race
|
||||
go/flag:vet-tags
|
||||
go/flag:vet-toolexec
|
||||
go/flag:vet-trimpath
|
||||
go/flag:vet-v
|
||||
go/flag:vet-vettool
|
||||
go/flag:vet-work
|
||||
go/flag:vet-x
|
||||
go/subcommand:help-vet
|
||||
go/subcommand:help-buildconstraint
|
||||
go/subcommand:help-buildmode
|
||||
go/subcommand:help-c
|
||||
go/subcommand:help-cache
|
||||
go/subcommand:help-environment
|
||||
go/subcommand:help-filetype
|
||||
go/subcommand:help-go.mod
|
||||
go/subcommand:help-gopath
|
||||
go/subcommand:help-goproxy
|
||||
go/subcommand:help-importpath
|
||||
go/subcommand:help-modules
|
||||
go/subcommand:help-module-auth
|
||||
go/subcommand:help-packages
|
||||
go/subcommand:help-private
|
||||
go/subcommand:help-testflag
|
||||
go/subcommand:help-testfunc
|
||||
go/subcommand:help-vcs
|
||||
go/errors:gomodcache-entry-relative
|
||||
go/errors:gopath-entry-relative
|
||||
go/errors:help-unknown-topic
|
||||
go/errors:invalid-toolchain-in-file
|
||||
go/toolchain/select-exec
|
||||
go/toolchain/switch-exec
|
Loading…
Reference in New Issue
Block a user