package govet import ( "go/ast" "go/token" "strings" "golang.org/x/tools/go/loader" ) type Issue struct { Pos token.Position Message string } var foundIssues []Issue func Analyze(files []*ast.File, fset *token.FileSet, pkgInfo *loader.PackageInfo, checkShadowing bool) ([]Issue, error) { foundIssues = nil *source = false // import type data for "fmt" from installed packages if checkShadowing { experimental["shadow"] = false } for name, setting := range report { if *setting == unset && !experimental[name] { *setting = setTrue } } initPrintFlags() initUnusedFlags() filesRun = true for _, f := range files { name := fset.Position(f.Pos()).Filename if !strings.HasSuffix(name, "_test.go") { includesNonTest = true } } pkg, err := doPackage(nil, pkgInfo, fset, files) if err != nil { return nil, err } if pkg == nil { return nil, nil } return foundIssues, nil }