45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
|
// staticcheck analyses Go code and makes it better.
|
||
|
package main // import "honnef.co/go/tools/cmd/staticcheck"
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"os"
|
||
|
|
||
|
"golang.org/x/tools/go/analysis"
|
||
|
"honnef.co/go/tools/lint"
|
||
|
"honnef.co/go/tools/lint/lintutil"
|
||
|
"honnef.co/go/tools/simple"
|
||
|
"honnef.co/go/tools/staticcheck"
|
||
|
"honnef.co/go/tools/stylecheck"
|
||
|
"honnef.co/go/tools/unused"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
fs := lintutil.FlagSet("staticcheck")
|
||
|
wholeProgram := fs.Bool("unused.whole-program", false, "Run unused in whole program mode")
|
||
|
debug := fs.String("debug.unused-graph", "", "Write unused's object graph to `file`")
|
||
|
fs.Parse(os.Args[1:])
|
||
|
|
||
|
var cs []*analysis.Analyzer
|
||
|
for _, v := range simple.Analyzers {
|
||
|
cs = append(cs, v)
|
||
|
}
|
||
|
for _, v := range staticcheck.Analyzers {
|
||
|
cs = append(cs, v)
|
||
|
}
|
||
|
for _, v := range stylecheck.Analyzers {
|
||
|
cs = append(cs, v)
|
||
|
}
|
||
|
|
||
|
u := unused.NewChecker(*wholeProgram)
|
||
|
if *debug != "" {
|
||
|
f, err := os.OpenFile(*debug, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
u.Debug = f
|
||
|
}
|
||
|
cums := []lint.CumulativeChecker{u}
|
||
|
lintutil.ProcessFlagSet(cs, cums, fs)
|
||
|
}
|