honnef.co/go/tools@v0.5.0-0.dev.0.20240520180541-dcae280a5e87/cmd/staticcheck/staticcheck.go (about) 1 // staticcheck analyses Go code and makes it better. 2 package main 3 4 import ( 5 "log" 6 "os" 7 8 "honnef.co/go/tools/lintcmd" 9 "honnef.co/go/tools/lintcmd/version" 10 "honnef.co/go/tools/quickfix" 11 "honnef.co/go/tools/simple" 12 "honnef.co/go/tools/staticcheck" 13 "honnef.co/go/tools/stylecheck" 14 "honnef.co/go/tools/unused" 15 ) 16 17 func main() { 18 cmd := lintcmd.NewCommand("staticcheck") 19 cmd.SetVersion(version.Version, version.MachineVersion) 20 21 fs := cmd.FlagSet() 22 debug := fs.String("debug.unused-graph", "", "Write unused's object graph to `file`") 23 qf := fs.Bool("debug.run-quickfix-analyzers", false, "Run quickfix analyzers") 24 25 cmd.ParseFlags(os.Args[1:]) 26 27 cmd.AddAnalyzers(simple.Analyzers...) 28 cmd.AddAnalyzers(staticcheck.Analyzers...) 29 cmd.AddAnalyzers(stylecheck.Analyzers...) 30 cmd.AddAnalyzers(unused.Analyzer) 31 32 if *qf { 33 cmd.AddAnalyzers(quickfix.Analyzers...) 34 } 35 36 if *debug != "" { 37 f, err := os.OpenFile(*debug, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) 38 if err != nil { 39 log.Fatal(err) 40 } 41 unused.Debug = f 42 } 43 44 cmd.Run() 45 }