Я использую этот код для получения списка зависимостей, импортированных в один исходный файл Go :
// GetFileImports returns all the imports from the Golang source code file.
func GetFileImports(filepath string) ([]string, error) {
fset := token.NewFileSet()
file, err := parser.ParseFile(fset, filepath, nil, parser.ImportsOnly)
if err != nil {
return nil, err
}
imports := make([]string, len(file.Imports))
for i := range file.Imports {
imports[i] = strings.Trim(file.Imports[i].Path.Value, "\"")
}
return imports, nil
}
Я получаю этот список:
namoled-core/data
namoled-core/shared
encoding/json
fmt
io/ioutil
log
net/http
github.com/gorilla/mux
github.com/gorilla/websocket
Где namoled-core/data
и namoled-core/shared
являются частями моего собственного проекта, github.com/gorilla/mux
и github.com/gorilla/websocket
являются загружаемыми зависимостями, а все остальные являются стандартными библиотечными зависимостями. Есть ли надежный и однозначный способ отличить зависимости от текущего проекта, загружаемые зависимости и зависимости стандартной библиотеки только по их путям импорта? Принимая во внимание, что путь проекта также может быть ссылкой Github .