2018-07-29 22:45:35 +03:00

52 lines
948 B
Go

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, pg astFilePathGetter) ([]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, pg)
if err != nil {
return nil, err
}
if pkg == nil {
return nil, nil
}
return foundIssues, nil
}