"strings"
"cmd/internal/objfile"
+ "cmd/internal/telemetry"
)
func printUsage(w *os.File) {
func main() {
log.SetFlags(0)
log.SetPrefix("addr2line: ")
+ telemetry.Start()
// pprof expects this behavior when checking for addr2line
if len(os.Args) > 1 && os.Args[1] == "--help" {
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("addr2line/invocations")
+ telemetry.CountFlags("addr2line/flag:", *flag.CommandLine)
if flag.NArg() != 1 {
usage()
}
"cmd/internal/bio"
"cmd/internal/obj"
"cmd/internal/objabi"
+ "cmd/internal/telemetry"
)
func main() {
log.SetFlags(0)
log.SetPrefix("asm: ")
+ telemetry.Start()
buildcfg.Check()
GOARCH := buildcfg.GOARCH
flags.Parse()
+ telemetry.Inc("asm/invocations")
+ telemetry.CountFlags("asm/flag:", *flag.CommandLine)
architecture := arch.Set(GOARCH, *flags.Shared || *flags.Dynlink)
if architecture == nil {
"strings"
"cmd/internal/buildid"
+ "cmd/internal/telemetry"
)
func usage() {
func main() {
log.SetPrefix("buildid: ")
log.SetFlags(0)
+ telemetry.Start()
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("buildid/invocations")
+ telemetry.CountFlags("buildid/flag:", *flag.CommandLine)
if flag.NArg() != 1 {
usage()
}
"cmd/internal/edit"
"cmd/internal/notsha256"
"cmd/internal/objabi"
+ "cmd/internal/telemetry"
)
// A Package collects information about the package we're going to write.
var gccBaseCmd []string
func main() {
+ telemetry.Start()
objabi.AddVersionFlag() // -V
objabi.Flagparse(usage)
+ telemetry.Inc("cgo/invocations")
+ telemetry.CountFlags("cgo/flag:", *flag.CommandLine)
if *gccgoDefineCgoIncomplete {
if !*gccgo {
import (
"cmd/internal/cov"
"cmd/internal/pkgpattern"
+ "cmd/internal/telemetry"
"flag"
"fmt"
"os"
)
func main() {
+ telemetry.Start()
+
// First argument should be mode/subcommand.
if len(os.Args) < 2 {
usage("missing command selector")
op.Usage("")
}
flag.Parse()
+ telemetry.Inc("covdata/invocations")
+ telemetry.CountFlags("covdata/flag:", *flag.CommandLine)
// Mode-independent flag setup
dbgtrace(1, "starting mode-independent setup")
"cmd/internal/edit"
"cmd/internal/objabi"
+ "cmd/internal/telemetry"
)
const usageMessage = "" +
)
func main() {
+ telemetry.Start()
+
objabi.AddVersionFlag()
flag.Usage = usage
objabi.Flagparse(usage)
+ telemetry.Inc("cover/invocations")
+ telemetry.CountFlags("cover/flag:", *flag.CommandLine)
// Usage information when no arguments.
if flag.NFlag() == 0 && flag.NArg() == 0 {
"runtime"
"strings"
"time"
+
+ "cmd/internal/telemetry"
)
func usage() {
func main() {
log.SetPrefix("distpack: ")
log.SetFlags(0)
+ telemetry.Start()
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("distpack/invocations")
+ telemetry.CountFlags("distpack/flag:", *flag.CommandLine)
if flag.NArg() != 0 {
usage()
}
"path"
"path/filepath"
"strings"
+
+ "cmd/internal/telemetry"
)
var (
func main() {
log.SetFlags(0)
log.SetPrefix("doc: ")
+ telemetry.Start()
dirsInit()
err := do(os.Stdout, flag.CommandLine, os.Args[1:])
if err != nil {
flagSet.BoolVar(&showSrc, "src", false, "show source code for symbol")
flagSet.BoolVar(&short, "short", false, "one-line representation for each symbol")
flagSet.Parse(args)
+ telemetry.Inc("doc/invocations")
+ telemetry.CountFlags("doc/flag:", *flag.CommandLine)
if chdir != "" {
if err := os.Chdir(chdir); err != nil {
return err
"path/filepath"
"sort"
"strings"
+
+ "cmd/internal/telemetry"
)
var (
}
func main() {
+ telemetry.Start()
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("fix/invocations")
+ telemetry.CountFlags("fix/flag:", *flag.CommandLine)
if !version.IsValid(*goVersion) {
report(fmt.Errorf("invalid -go=%s", *goVersion))
"strconv"
"strings"
+ "cmd/internal/telemetry"
+
"golang.org/x/sync/semaphore"
)
}
func gofmtMain(s *sequencer) {
+ telemetry.Start()
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("gofmt/invocations")
+ telemetry.CountFlags("gofmt/flag:", *flag.CommandLine)
if *cpuprofile != "" {
fdSem <- true
"sort"
"cmd/internal/objfile"
+ "cmd/internal/telemetry"
)
const helpText = `usage: go tool nm [options] file...
func main() {
log.SetFlags(0)
+ telemetry.Start()
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("nm/invocations")
+ telemetry.CountFlags("nm/flag:", *flag.CommandLine)
switch *sortOrder {
case "address", "name", "none", "size":
"strings"
"cmd/internal/objfile"
+ "cmd/internal/telemetry"
)
var printCode = flag.Bool("S", false, "print Go code alongside assembly")
func main() {
log.SetFlags(0)
log.SetPrefix("objdump: ")
+ telemetry.Start()
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("objdump/invocations")
+ telemetry.CountFlags("objdump/flag:", *flag.CommandLine)
if flag.NArg() != 1 && flag.NArg() != 3 {
usage()
}
import (
"cmd/internal/archive"
+ "cmd/internal/telemetry"
"fmt"
"io"
"io/fs"
func main() {
log.SetFlags(0)
log.SetPrefix("pack: ")
+ telemetry.Start()
// need "pack op archive" at least.
if len(os.Args) < 3 {
log.Print("not enough arguments")
usage()
}
setOp(os.Args[1])
+ telemetry.Inc("pack/invocations")
+ telemetry.Inc("pack/op:" + string(op))
var ar *Archive
switch op {
case 'p':
import (
"crypto/tls"
"debug/dwarf"
+ "flag"
"fmt"
"io"
"net/http"
"time"
"cmd/internal/objfile"
+ "cmd/internal/telemetry"
"github.com/google/pprof/driver"
"github.com/google/pprof/profile"
)
func main() {
+ telemetry.Start()
+ telemetry.Inc("pprof/invocations")
options := &driver.Options{
Fetch: new(fetcher),
Obj: new(objTool),
UI: newUI(),
}
- if err := driver.PProf(options); err != nil {
+ err := driver.PProf(options)
+ telemetry.CountFlags("pprof/flag:", *flag.CommandLine) // pprof will use the flag package as its default
+ if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(2)
}
"bufio"
"cmd/internal/objabi"
"cmd/internal/pgo"
+ "cmd/internal/telemetry"
"flag"
"fmt"
"log"
}
var (
- output = flag.String("o", "", "output file path")
- input = flag.String("i", "", "input pprof file path")
+ output = flag.String("o", "", "output file path")
+ input = flag.String("i", "", "input pprof file path")
)
func preprocess(profileFile string, outputFile string) error {
log.SetFlags(0)
log.SetPrefix("preprofile: ")
+ telemetry.Start()
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("preprofile/invocations")
+ telemetry.CountFlags("preprofile/flag:", *flag.CommandLine)
if *input == "" {
log.Print("Input pprof path required (-i)")
usage()
"os/exec"
"os/signal"
+ "cmd/internal/telemetry"
"cmd/internal/test2json"
)
}
func main() {
+ telemetry.Start()
+
flag.Usage = usage
flag.Parse()
+ telemetry.Inc("test2json/invocations")
+ telemetry.CountFlags("test2json/flag:", *flag.CommandLine)
var mode test2json.Mode
if *flagT {
import (
"bufio"
"cmd/internal/browser"
+ "cmd/internal/telemetry"
cmdv2 "cmd/trace/v2"
"flag"
"fmt"
)
func main() {
+ telemetry.Start()
flag.Usage = func() {
fmt.Fprint(os.Stderr, usageMessage)
os.Exit(2)
}
flag.Parse()
+ telemetry.Inc("trace/invocations")
+ telemetry.CountFlags("trace/flag:", *flag.CommandLine)
// Go 1.7 traces embed symbol info and does not require the binary.
// But we optionally accept binary as first arg for Go 1.5 traces.
import (
"cmd/internal/objabi"
+ "cmd/internal/telemetry"
+ "flag"
"golang.org/x/tools/go/analysis/unitchecker"
)
func main() {
+ telemetry.Start()
objabi.AddVersionFlag()
+ telemetry.Inc("vet/invocations")
unitchecker.Main(
appends.Analyzer,
asmdecl.Analyzer,
unsafeptr.Analyzer,
unusedresult.Analyzer,
)
+
+ // It's possible that unitchecker will exit early. In
+ // those cases the flags won't be counted.
+ telemetry.CountFlags("vet/flag:", *flag.CommandLine)
}