woodpecker/vendor/github.com/gostaticanalysis/analysisutil/pkg.go
Lukas c28f7cb29f
Add golangci-lint (#502)
Initial part of #435
2021-11-14 21:01:54 +01:00

49 lines
1,006 B
Go

package analysisutil
import (
"go/types"
"strconv"
"strings"
"golang.org/x/tools/go/analysis"
)
// RemoVendor removes vendoring information from import path.
func RemoveVendor(path string) string {
i := strings.Index(path, "vendor/")
if i >= 0 {
return path[i+len("vendor/"):]
}
return path
}
// LookupFromImports finds an object from import paths.
func LookupFromImports(imports []*types.Package, path, name string) types.Object {
path = RemoveVendor(path)
for i := range imports {
if path == RemoveVendor(imports[i].Path()) {
return imports[i].Scope().Lookup(name)
}
}
return nil
}
// Imported returns true when the given pass imports the pkg.
func Imported(pkgPath string, pass *analysis.Pass) bool {
fs := pass.Files
if len(fs) == 0 {
return false
}
for _, f := range fs {
for _, i := range f.Imports {
path, err := strconv.Unquote(i.Path.Value)
if err != nil {
continue
}
if RemoveVendor(path) == pkgPath {
return true
}
}
}
return false
}