diff --git a/parser/parser.go b/parser/parser.go index 1aa42d7..13875cc 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -1,12 +1,10 @@ package parser import ( - "bytes" "go/ast" "go/parser" "go/token" "os" - "os/exec" "strings" ) @@ -105,11 +103,6 @@ func (p *Parser) Parse(fname string, isDir bool) error { return nil } -func getDefaultGoPath() (string, error) { - output, err := exec.Command("go", "env", "GOPATH").Output() - return string(bytes.TrimSpace(output)), err -} - func excludeTestFiles(fi os.FileInfo) bool { return !strings.HasSuffix(fi.Name(), "_test.go") } diff --git a/parser/pkgpath.go b/parser/pkgpath.go index f5c28a1..4207211 100644 --- a/parser/pkgpath.go +++ b/parser/pkgpath.go @@ -10,6 +10,7 @@ import ( "path/filepath" "strings" "sync" + "go/build" ) func getPkgPath(fname string, isDir bool) (string, error) { @@ -121,11 +122,7 @@ func getModulePath(goModPath string) string { func getPkgPathFromGOPATH(fname string, isDir bool) (string, error) { gopath := os.Getenv("GOPATH") if gopath == "" { - var err error - gopath, err = getDefaultGoPath() - if err != nil { - return "", fmt.Errorf("cannot determine GOPATH: %s", err) - } + gopath = build.Default.GOPATH } for _, p := range strings.Split(gopath, string(filepath.ListSeparator)) {