Skip to content

Commit

Permalink
Convert file exclusion for directory exclusion for JAS scanners (jfro…
Browse files Browse the repository at this point in the history
  • Loading branch information
attiasas authored Jun 27, 2024
1 parent b8e3d60 commit e820e14
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 6 deletions.
2 changes: 1 addition & 1 deletion cli/docs/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ var flagsMap = map[string]components.Flag{
ExclusionsAudit: components.NewStringFlag(
Exclusions,
"List of exclusions separated by semicolons, utilized to skip sub-projects from undergoing an audit. These exclusions may incorporate the * and ? wildcards.",
components.WithStrDefaultValue(strings.Join(sca.DefaultExcludePatterns, ";")),
components.WithStrDefaultValue(strings.Join(sca.DefaultScaExcludePatterns, ";")),
),
Mvn: components.NewBoolFlag(Mvn, "Set to true to request audit for a Maven project."),
Gradle: components.NewBoolFlag(Gradle, "Set to true to request audit for a Gradle project."),
Expand Down
5 changes: 3 additions & 2 deletions commands/audit/sca/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,16 @@ import (
xrayUtils "github.com/jfrog/jfrog-client-go/xray/services/utils"
)

var DefaultExcludePatterns = []string{"*.git*", "*node_modules*", "*target*", "*venv*", "*test*"}
// Exclude pattern for directories.
var DefaultScaExcludePatterns = []string{"*.git*", "*node_modules*", "*target*", "*venv*", "*test*"}

var CurationErrorMsgToUserTemplate = "Failed to retrieve the dependencies tree for the %s project. Please contact your " +
"Artifactory administrator to verify pass-through for Curation audit is enabled for your project"

func GetExcludePattern(params utils.AuditParams) string {
exclusions := params.Exclusions()
if len(exclusions) == 0 {
exclusions = append(exclusions, DefaultExcludePatterns...)
exclusions = append(exclusions, DefaultScaExcludePatterns...)
}
return fspatterns.PrepareExcludePathPattern(exclusions, clientutils.WildCardPattern, params.IsRecursiveScan())
}
Expand Down
15 changes: 12 additions & 3 deletions jas/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ const (
)

var (
DefaultExcludePatterns = []string{"**/.git/**", "**/*test*/**", "**/*venv*/**", NodeModulesPattern, "**/target/**"}
// Exclude pattern for files.
DefaultJasExcludePatterns = []string{"**/.git/**", "**/*test*/**", "**/*venv*/**", NodeModulesPattern, "**/target/**"}

mapSeverityToScore = map[string]string{
"": "0.0",
Expand Down Expand Up @@ -258,18 +259,26 @@ func GetSourceRoots(module jfrogappsconfig.Module, scanner *jfrogappsconfig.Scan

func GetExcludePatterns(module jfrogappsconfig.Module, scanner *jfrogappsconfig.Scanner, exclusions ...string) []string {
if len(exclusions) > 0 {
return exclusions
return convertToFilesExcludePatterns(exclusions)
}
excludePatterns := module.ExcludePatterns
if scanner != nil {
excludePatterns = append(excludePatterns, scanner.ExcludePatterns...)
}
if len(excludePatterns) == 0 {
return DefaultExcludePatterns
return DefaultJasExcludePatterns
}
return excludePatterns
}

func convertToFilesExcludePatterns(excludePatterns []string) []string {
patterns := []string{}
for _, excludePattern := range excludePatterns {
patterns = append(patterns, "**/"+excludePattern+"/**")
}
return patterns
}

func SetAnalyticsMetricsDataForAnalyzerManager(msi string, technologies []techutils.Technology) func() {
errMsg := "failed %s %s environment variable. Cause: %s"
resetAnalyzerManageJfMsiVar, err := clientutils.SetEnvWithResetCallback(utils.JfMsiEnvVariable, msi)
Expand Down
21 changes: 21 additions & 0 deletions jas/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,27 @@ func TestAddScoreToRunRules(t *testing.T) {
}
}

func TestConvertToFilesExcludePatterns(t *testing.T) {
tests := []struct {
name string
excludePatterns []string
expectedOutput []string
}{
{
excludePatterns: []string{},
expectedOutput: []string{},
},
{
excludePatterns: []string{"*.git*", "*node_modules*", "*target*", "*venv*", "*test*"},
expectedOutput: []string{"**/*.git*/**", "**/*node_modules*/**", "**/*target*/**", "**/*venv*/**", "**/*test*/**"},
},
}

for _, test := range tests {
assert.Equal(t, test.expectedOutput, convertToFilesExcludePatterns(test.excludePatterns))
}
}

func TestSetAnalyticsMetricsDataForAnalyzerManager(t *testing.T) {
type args struct {
msi string
Expand Down

0 comments on commit e820e14

Please sign in to comment.