52 lines
948 B
Go
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
|
|
}
|