Skip to content

Commit

Permalink
refactor(allowlist): use iota for condition (#1569)
Browse files Browse the repository at this point in the history
  • Loading branch information
rgmz authored Oct 16, 2024
1 parent 12034a7 commit 5c03fa4
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 15 deletions.
2 changes: 1 addition & 1 deletion cmd/generate/config/rules/config.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ tags = [
{{ else }}
{{ with $rule.Allowlists }}{{ range $i, $allowlist := . }}{{ if or $allowlist.Regexes $allowlist.Paths $allowlist.Commits $allowlist.StopWords }}
[[rules.allowlists]]
{{ with $allowlist.MatchCondition }}condition = "{{ . }}"
{{ with $allowlist.MatchCondition }}condition = "{{ .String }}"
{{ end -}}
{{- with $allowlist.Commits }}commits = [
{{ range $j, $commit := . }}"{{ $commit }}",{{ end }}
Expand Down
13 changes: 10 additions & 3 deletions config/allowlist.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,20 @@ import (
"strings"
)

type AllowlistMatchCondition string
type AllowlistMatchCondition int

const (
AllowlistMatchOr AllowlistMatchCondition = "OR"
AllowlistMatchAnd = "AND"
AllowlistMatchOr AllowlistMatchCondition = iota
AllowlistMatchAnd
)

func (a AllowlistMatchCondition) String() string {
return [...]string{
"OR",
"AND",
}[a]
}

// Allowlist allows a rule to be ignored for specific
// regexes, paths, and/or commits
type Allowlist struct {
Expand Down
18 changes: 9 additions & 9 deletions config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func TestTranslate(t *testing.T) {
Keywords: []string{},
Allowlists: []Allowlist{
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
Regexes: []*regexp.Regexp{regexp.MustCompile("123")},
},
},
Expand Down Expand Up @@ -68,7 +68,7 @@ func TestTranslate(t *testing.T) {
Tags: []string{"key", "AWS"},
Allowlists: []Allowlist{
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
Regexes: []*regexp.Regexp{regexp.MustCompile("AKIALALEMEL33243OLIA")},
},
},
Expand All @@ -87,7 +87,7 @@ func TestTranslate(t *testing.T) {
Tags: []string{"key", "AWS"},
Allowlists: []Allowlist{
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
Commits: []string{"allowthiscommit"},
},
},
Expand All @@ -106,7 +106,7 @@ func TestTranslate(t *testing.T) {
Tags: []string{"key", "AWS"},
Allowlists: []Allowlist{
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
Paths: []*regexp.Regexp{regexp.MustCompile(".go")},
},
},
Expand Down Expand Up @@ -184,11 +184,11 @@ func TestTranslate(t *testing.T) {
Tags: []string{"key", "AWS"},
Allowlists: []Allowlist{
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
StopWords: []string{"fake"},
},
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
Commits: []string{"abcdefg1"},
Paths: []*regexp.Regexp{regexp.MustCompile(`ignore\.xaml`)},
Regexes: []*regexp.Regexp{regexp.MustCompile(`foo.+bar`)},
Expand All @@ -212,11 +212,11 @@ func TestTranslate(t *testing.T) {
Tags: []string{"key", "AWS"},
Allowlists: []Allowlist{
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
StopWords: []string{"fake"},
},
{
MatchCondition: "AND",
MatchCondition: AllowlistMatchAnd,
Commits: []string{"abcdefg1"},
Paths: []*regexp.Regexp{regexp.MustCompile(`ignore\.xaml`)},
Regexes: []*regexp.Regexp{regexp.MustCompile(`foo.+bar`)},
Expand All @@ -240,7 +240,7 @@ func TestTranslate(t *testing.T) {
Tags: []string{"key", "AWS"},
Allowlists: []Allowlist{
{
MatchCondition: "OR",
MatchCondition: AllowlistMatchOr,
Paths: []*regexp.Regexp{regexp.MustCompile(`something.py`)},
},
},
Expand Down
4 changes: 2 additions & 2 deletions detect/detect.go
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ func (d *Detector) detectRule(fragment Fragment, currentRaw string, rule config.
}
if isAllowed {
logger.Trace().
Str("condition", string(a.MatchCondition)).
Str("condition", a.MatchCondition.String()).
Bool("commit-allowed", commitAllowed).
Bool("path-allowed", commitAllowed).
Msg("Skipping fragment due to rule allowlist")
Expand Down Expand Up @@ -474,7 +474,7 @@ MatchLoop:
if isAllowed {
logger.Trace().
Str("finding", finding.Secret).
Str("condition", string(a.MatchCondition)).
Str("condition", a.MatchCondition.String()).
Bool("regex-allowed", regexAllowed).
Bool("contains-stopword", containsStopword).
Msg("Skipping finding due to rule allowlist")
Expand Down

0 comments on commit 5c03fa4

Please sign in to comment.