Skip to content

Commit b671eb3

Browse files
authored
Merge pull request #1 from twosigma/filterExpansion
Filter expansion
2 parents f774932 + dba6575 commit b671eb3

File tree

10 files changed

+249
-102
lines changed

10 files changed

+249
-102
lines changed

.gitleaksignore

Lines changed: 83 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,23 @@
11
418edf165dbb63d6f46993ae8f8818ffd87ea582:cmd/generate/config/rules/jwt.go:jwt:17
22
418edf165dbb63d6f46993ae8f8818ffd87ea582:cmd/generate/config/rules/jwt.go:jwt:19
3-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:46
4-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:48
5-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:50
6-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:52
7-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:54
8-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:55
9-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:56
10-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:57
11-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:22
12-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:23
13-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:24
14-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:28
15-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:29
16-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-sensitive-url:164
17-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-sensitive-url:170
18-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-secret:120
19-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-secret:126
20-
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-secret:142
213
31650f01e76858ce7a0490943426e84a0824bbc8:config/config_test.go:aws-access-token:31
224
5ed010c944ccc715cb9245abafd4e97d98d75e9f:config/config_test.go:aws-access-token:31
235
ad7509e3b47331ce9586743ace635422843b695b:cmd/generate/config/rules/privatekey.go:private-key:22
246
717cf1b10be1625875199eca8cdf48883348985f:README.md:aws-access-token:23
257
3474c58c9e25fe2b1cee855a35bd1bf8a8c0fae8:cmd/generate/config/rules/generic.go:clojars-api-token:38
268
a42b32bdf11b6f4ea5c32ec76a1731b4b0c5e52a:cmd/generate/config/rules/generic.go:generic-api-key:40
279
a42b32bdf11b6f4ea5c32ec76a1731b4b0c5e52a:cmd/generate/config/rules/generic.go:generic-api-key:41
10+
17b5540fb16bd9816d2a3a83f65cedf5918eaf70:detect/detect_test.go:pypi-upload-token:27
11+
17b5540fb16bd9816d2a3a83f65cedf5918eaf70:detect/detect_test.go:pypi-upload-token:32
12+
17b5540fb16bd9816d2a3a83f65cedf5918eaf70:detect/detect_test.go:pypi-upload-token:33
2813
3e5e63956ea770be734dcb7642cf515910154fb5:detect/detect_test.go:aws-access-token:50
2914
3e5e63956ea770be734dcb7642cf515910154fb5:detect/detect_test.go:aws-access-token:60
3015
3e5e63956ea770be734dcb7642cf515910154fb5:detect/detect_test.go:aws-access-token:61
31-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:pypi-upload-token:29
32-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:51
33-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:73
34-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:81
35-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:89
36-
33082a996774ba4c8ad4ba26fd219d77497eb960:README.md:sidekiq-secret:43
37-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:98
16+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-secret:120
17+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-secret:126
18+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-secret:142
19+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-sensitive-url:164
20+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:detect/detect_test.go:sidekiq-sensitive-url:170
3821
57d2d345b6b6ea220be9d99792b21a75359555c0:detect/detect_test.go:aws-access-token:235
3922
57d2d345b6b6ea220be9d99792b21a75359555c0:detect/detect_test.go:aws-access-token:236
4023
57d2d345b6b6ea220be9d99792b21a75359555c0:detect/detect_test.go:aws-access-token:253
@@ -45,18 +28,6 @@ a42b32bdf11b6f4ea5c32ec76a1731b4b0c5e52a:cmd/generate/config/rules/generic.go:ge
4528
57d2d345b6b6ea220be9d99792b21a75359555c0:detect/detect_test.go:aws-access-token:344
4629
57d2d345b6b6ea220be9d99792b21a75359555c0:detect/detect_test.go:aws-access-token:362
4730
57d2d345b6b6ea220be9d99792b21a75359555c0:detect/detect_test.go:aws-access-token:363
48-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:pypi-upload-token:27
49-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:49
50-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:71
51-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:79
52-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:87
53-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:120
54-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:96
55-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:128
56-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:118
57-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:150
58-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:126
59-
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:166
6031
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:175
6132
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:183
6233
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:238
@@ -69,13 +40,28 @@ c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token
6940
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:357
7041
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:375
7142
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:376
72-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:148
73-
17b5540fb16bd9816d2a3a83f65cedf5918eaf70:detect/detect_test.go:pypi-upload-token:27
74-
17b5540fb16bd9816d2a3a83f65cedf5918eaf70:detect/detect_test.go:pypi-upload-token:32
75-
17b5540fb16bd9816d2a3a83f65cedf5918eaf70:detect/detect_test.go:pypi-upload-token:33
76-
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:164
43+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:51
44+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:73
45+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:81
46+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:aws-access-token:89
47+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:120
48+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:128
49+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:150
50+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:166
51+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:discord-api-token:98
52+
6e72472b6019d29eaa4b76b39700cd2418741f0c:detect/detect_test.go:pypi-upload-token:29
7753
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:173
7854
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:181
55+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:49
56+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:71
57+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:79
58+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:aws-access-token:87
59+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:118
60+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:126
61+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:148
62+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:164
63+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:discord-api-token:96
64+
c9bc6b46087e700a42eb3492cf2053b7da4a6d9e:detect/detect_test.go:pypi-upload-token:27
7965
ce42947cae32cda8d5d8813c1a8ce82eb06f018e:detect/git_test.go:aws-access-token:43
8066
ce42947cae32cda8d5d8813c1a8ce82eb06f018e:detect/git_test.go:aws-access-token:60
8167
ce42947cae32cda8d5d8813c1a8ce82eb06f018e:detect/git_test.go:aws-access-token:85
@@ -132,16 +118,70 @@ f0b8d26c9988af725132c100dda5051586a3026e:README.md:discord-client-secret:225
132118
6adc045580c3911a7a936be7b977979a5519aa29:testdata/expect/basic/results_files_at_208ae46.json:aws-access-token:22
133119
6adc045580c3911a7a936be7b977979a5519aa29:testdata/expect/basic/results_no_git.json:aws-access-token:3
134120
6adc045580c3911a7a936be7b977979a5519aa29:testdata/expect/basic/results_no_git.json:aws-access-token:5
121+
33082a996774ba4c8ad4ba26fd219d77497eb960:README.md:sidekiq-secret:43
122+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:22
123+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:23
124+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:24
125+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:28
126+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:29
127+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:46
128+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:48
129+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:50
130+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:52
131+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:54
132+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:55
133+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:56
134+
525d9792b1e3670b4630b8fcc385ca22e8544f9b:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:57
135+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:22
136+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:23
137+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:24
138+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:28
139+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:29
140+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:46
141+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:48
142+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:50
143+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:52
144+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:54
145+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:55
146+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:56
147+
cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-sensitive-url:57
148+
7f9f5bd14e4410e195dcc65a1d5d9eca4d31e2d6:detect/detect_test.go:aws-access-token:324
149+
7f9f5bd14e4410e195dcc65a1d5d9eca4d31e2d6:detect/detect_test.go:aws-access-token:325
150+
7f9f5bd14e4410e195dcc65a1d5d9eca4d31e2d6:detect/detect_test.go:aws-access-token:326
135151
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:aws-access-token:26
136152
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:aws-access-token:31
137153
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:aws-access-token:40
138154
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:aws-access-token:46
139155
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:aws-access-token:52
156+
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:discord-api-token:109
140157
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:discord-api-token:59
141158
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:discord-api-token:74
142159
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:discord-api-token:80
143160
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:discord-api-token:95
144-
93f292c3dfa2649ef91f8925b623e79546fa992e:detect/detect_test.go:discord-api-token:109
161+
cd5226711335c68be1e720b318b7bc3135a30eb2:detect/detect_test.go:sidekiq-secret:120
162+
cd5226711335c68be1e720b318b7bc3135a30eb2:detect/detect_test.go:sidekiq-secret:126
163+
cd5226711335c68be1e720b318b7bc3135a30eb2:detect/detect_test.go:sidekiq-secret:142
164+
cd5226711335c68be1e720b318b7bc3135a30eb2:detect/detect_test.go:sidekiq-sensitive-url:164
165+
cd5226711335c68be1e720b318b7bc3135a30eb2:detect/detect_test.go:sidekiq-sensitive-url:170
166+
cfb170eae0c31f53889ddb9363d9810b32a9f1ae:detect/detect_test.go:aws-access-token:352
167+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:aws-access-token:112
168+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:aws-access-token:371
169+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:aws-access-token:393
170+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:aws-access-token:419
171+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:aws-access-token:497
172+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:aws-access-token:519
173+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:aws-access-token:67
174+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:discord-api-token:229
175+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:discord-api-token:260
176+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:pypi-upload-token:89
177+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:sidekiq-secret:135
178+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:sidekiq-secret:159
179+
e19dbc263dc6831d335e44360b20f84e735210e0:detect/detect_test.go:sidekiq-sensitive-url:182
180+
f60e1631721d9359d0bb636b82bbb32505e1a067:detect/detect_test.go:aws-access-token:325
181+
f60e1631721d9359d0bb636b82bbb32505e1a067:detect/detect_test.go:aws-access-token:334
182+
f60e1631721d9359d0bb636b82bbb32505e1a067:detect/detect_test.go:aws-access-token:343
183+
f60e1631721d9359d0bb636b82bbb32505e1a067:detect/detect_test.go:aws-access-token:343
184+
f60e1631721d9359d0bb636b82bbb32505e1a067:detect/detect_test.go:aws-access-token:352
145185
6adc045580c3911a7a936be7b977979a5519aa29:testdata/expect/basic/results_no_git.json:aws-access-token:20
146186
6adc045580c3911a7a936be7b977979a5519aa29:testdata/expect/basic/results_no_git.json:aws-access-token:22
147187
6adc045580c3911a7a936be7b977979a5519aa29:testdata/expect/basic/results_unstaged.json:aws-access-token:3

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,14 @@ regexes = [
339339
'''process''',
340340
'''getenv''',
341341
]
342+
# note: Enclosing lines regex patterns targets all of the lines enclosing a given secret. These patterns allow you
343+
# to match on all the lines that the secret is found on.
344+
enclosinglinesregexes = [
345+
"NON_SENSITIVE_PREFIX_",
346+
"_NON_SENSITIVE_INFIX_",
347+
"_NON_SENSITIVE_SUFFIX",
348+
"CIRCUMFIX_START_.*_CIRCUMFIX_END"]
349+
342350
# note: stopwords targets the extracted secret, not the entire regex match
343351
# like 'regexes' does. (stopwords introduced in 8.8.0)
344352
stopwords = [
@@ -362,6 +370,13 @@ regexes = [
362370
'''078-05-1120''',
363371
'''(9[0-9]{2}|666)-\d{2}-\d{4}''',
364372
]
373+
# note: Enclosing lines regex patterns targets all of the lines enclosing a given secret. These patterns allow you
374+
# to match on all the lines that the secret is found on.
375+
enclosinglinesregexes = [
376+
"NON_SENSITIVE_PREFIX_",
377+
"_NON_SENSITIVE_INFIX_",
378+
"_NON_SENSITIVE_SUFFIX",
379+
"CIRCUMFIX_START_.*_CIRCUMFIX_END"]
365380
# note: stopwords targets the extracted secret, not the entire regex match
366381
# like 'regexes' does. (stopwords introduced in 8.8.0)
367382
stopwords = [

config/allowlist.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ type Allowlist struct {
1414
// Regexes is slice of content regular expressions that are allowed to be ignored.
1515
Regexes []*regexp.Regexp
1616

17+
// EnclosingLinesRegexes is a slice of regular expressions used to ignore findings.
18+
// These Regex patterns filter out findings based on the lines that enclose a particular match.
19+
// This is different from the Regexes slice, which only acts on the subexpression labeled as the "secret" in a match
20+
EnclosingLinesRegexes []*regexp.Regexp
21+
1722
// Paths is a slice of path regular expressions that are allowed to be ignored.
1823
Paths []*regexp.Regexp
1924

@@ -49,6 +54,11 @@ func (a *Allowlist) RegexAllowed(s string) bool {
4954
return anyRegexMatch(s, a.Regexes)
5055
}
5156

57+
// EnclosingLinesRegexAllowed returns true if the regex matching on the enclosing lines is allowed to be ignored.
58+
func (a *Allowlist) EnclosingLinesRegexAllowed(s string) bool {
59+
return anyRegexMatch(s, a.EnclosingLinesRegexes)
60+
}
61+
5262
func (a *Allowlist) ContainsStopWord(s string) bool {
5363
s = strings.ToLower(s)
5464
for _, stopWord := range a.StopWords {

config/allowlist_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,33 @@ func TestRegexAllowed(t *testing.T) {
6666
}
6767
}
6868

69+
func TestEnclosingLinesRegexAllowed(t *testing.T) {
70+
tests := []struct {
71+
allowlist Allowlist
72+
enclosedSecret string
73+
encRegexAllowed bool
74+
}{
75+
{
76+
allowlist: Allowlist{
77+
EnclosingLinesRegexes: []*regexp.Regexp{regexp.MustCompile("a.*done")},
78+
},
79+
enclosedSecret: "a secret: notrealsecret, done",
80+
encRegexAllowed: true,
81+
},
82+
{
83+
allowlist: Allowlist{
84+
EnclosingLinesRegexes: []*regexp.Regexp{regexp.MustCompile("a.*done")},
85+
},
86+
enclosedSecret: "a secret",
87+
encRegexAllowed: false,
88+
},
89+
}
90+
for _, tt := range tests {
91+
assert.Equal(t, tt.encRegexAllowed, tt.allowlist.EnclosingLinesRegexAllowed(tt.enclosedSecret))
92+
}
93+
94+
}
95+
6996
func TestPathAllowed(t *testing.T) {
7097
tests := []struct {
7198
allowlist Allowlist

0 commit comments

Comments
 (0)