mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package configurebaseline
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io/fs"
|
|
"path"
|
|
"path/filepath"
|
|
|
|
"github.com/github/codeql-go/extractor/util"
|
|
)
|
|
|
|
type BaselineConfig struct {
|
|
PathsIgnore []string `json:"paths-ignore"`
|
|
}
|
|
|
|
func GetConfigBaselineAsJSON(rootDir string) ([]byte, error) {
|
|
vendorDirs := make([]string, 0)
|
|
|
|
extractVendorDirs, _ := util.IsVendorDirExtractionEnabled()
|
|
if extractVendorDirs {
|
|
// The user wants vendor directories scanned; emit an empty report.
|
|
} else {
|
|
filepath.WalkDir(rootDir, func(dirPath string, d fs.DirEntry, err error) error {
|
|
if err != nil {
|
|
// Ignore any unreadable paths -- if this script can't see it, very likely
|
|
// it will not be extracted either.
|
|
return nil
|
|
}
|
|
if util.IsGolangVendorDirectory(dirPath) {
|
|
// Note that CodeQL expects a forward-slash-separated path, even on Windows.
|
|
vendorDirs = append(vendorDirs, path.Join(filepath.ToSlash(dirPath), "**"))
|
|
return filepath.SkipDir
|
|
} else {
|
|
return nil
|
|
}
|
|
})
|
|
}
|
|
|
|
outputStruct := BaselineConfig{PathsIgnore: vendorDirs}
|
|
return json.Marshal(outputStruct)
|
|
}
|