staticcheck.go raw
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 }
46