github.com/trigonella/golangci-lint@v1.10.1/pkg/packages/package.go (about) 1 package packages 2 3 import ( 4 "go/build" 5 "path/filepath" 6 7 "github.com/golangci/golangci-lint/pkg/goutils" 8 ) 9 10 type Package struct { 11 bp *build.Package 12 13 isFake bool 14 dir string // dir != bp.dir only if isFake == true 15 } 16 17 func (pkg *Package) Files(includeTest bool) []string { 18 var pkgFiles []string 19 for _, f := range pkg.bp.GoFiles { 20 if !goutils.IsCgoFilename(f) { 21 // skip cgo at all levels to prevent failures on file reading 22 pkgFiles = append(pkgFiles, f) 23 } 24 } 25 26 // TODO: add cgo files 27 if includeTest { 28 pkgFiles = append(pkgFiles, pkg.TestFiles()...) 29 } 30 31 for i, f := range pkgFiles { 32 pkgFiles[i] = filepath.Join(pkg.bp.Dir, f) 33 } 34 35 return pkgFiles 36 } 37 38 func (pkg *Package) Dir() string { 39 if pkg.dir != "" { // for fake packages 40 return pkg.dir 41 } 42 43 return pkg.bp.Dir 44 } 45 46 func (pkg *Package) IsTestOnly() bool { 47 return len(pkg.bp.GoFiles) == 0 48 } 49 50 func (pkg *Package) TestFiles() []string { 51 var pkgFiles []string 52 pkgFiles = append(pkgFiles, pkg.bp.TestGoFiles...) 53 pkgFiles = append(pkgFiles, pkg.bp.XTestGoFiles...) 54 return pkgFiles 55 } 56 57 func (pkg *Package) BuildPackage() *build.Package { 58 return pkg.bp 59 }