in cmd/vulnreport/main.go [220:250]
func findExportedSymbols(module, pkgPath string, c *reportClient) (_ []string, err error) {
defer derrors.Wrap(&err, "addExportedSymbols(%q, %q)", module, pkgPath)
if pkgPath == "" {
pkgPath = module
}
pkgs, err := loadPackage(&packages.Config{}, pkgPath)
if err != nil {
return nil, err
}
if len(pkgs) == 0 {
return nil, errors.New("no packages found")
}
// First package should match package path and module.
if pkgs[0].PkgPath != pkgPath {
return nil, fmt.Errorf("first package had import path %s, wanted %s", pkgs[0].PkgPath, pkgPath)
}
if pm := pkgs[0].Module; pm == nil || pm.Path != module {
return nil, fmt.Errorf("got module %v, expected %s", pm, module)
}
newsyms, err := exportedFunctions(pkgs, c)
if err != nil {
return nil, err
}
var newslice []string
for s := range newsyms {
newslice = append(newslice, s)
}
sort.Strings(newslice)
return newslice, nil
}