@@ -7,6 +7,9 @@ if (!(Get-Module PSScriptAnalyzer) -and !$testingLibraryUsage)
7
7
}
8
8
9
9
$directory = Split-Path - Parent $MyInvocation.MyCommand.Path
10
+ $testRootDirectory = Split-Path - Parent $directory
11
+ Import-Module (Join-Path $testRootDirectory ' PSScriptAnalyzerTestHelper.psm1' )
12
+
10
13
$violationsUsingScriptDefinition = Invoke-ScriptAnalyzer - ScriptDefinition (Get-Content - Raw " $directory \RuleSuppression.ps1" )
11
14
$violations = Invoke-ScriptAnalyzer " $directory \RuleSuppression.ps1"
12
15
@@ -146,4 +149,70 @@ Describe "RuleSuppressionWithScope" {
146
149
$suppression.Count | Should Be 0
147
150
}
148
151
}
152
+
153
+ Context " Function scope with regular expression" {
154
+ It " suppresses objects that match the regular expression" {
155
+ $scriptDef = @'
156
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Scope='Function', Target='start-ba[rz]')]
157
+ param()
158
+ function start-foo {
159
+ write-host "start-foo"
160
+ }
161
+
162
+ function start-bar {
163
+ write-host "start-bar"
164
+ }
165
+
166
+ function start-baz {
167
+ write-host "start-baz"
168
+ }
169
+
170
+ function start-bam {
171
+ write-host "start-bam"
172
+ }
173
+ '@
174
+ $suppressed = Invoke-ScriptAnalyzer - ScriptDefinition $scriptDef - IncludeRule ' PSAvoidUsingWriteHost' - SuppressedOnly
175
+ $suppressed.Count | Should Be 2
176
+ }
177
+
178
+ It " suppresses objects that match glob pattern with glob in the end" {
179
+ $scriptDef = @'
180
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Scope='Function', Target='start-*')]
181
+ param()
182
+ function start-foo {
183
+ write-host "start-foo"
184
+ }
185
+
186
+ function start-bar {
187
+ write-host "start-bar"
188
+ }
189
+
190
+ function stop-bar {
191
+ write-host "stop-bar"
192
+ }
193
+ '@
194
+ $suppressed = Invoke-ScriptAnalyzer - ScriptDefinition $scriptDef - IncludeRule ' PSAvoidUsingWriteHost' - SuppressedOnly
195
+ $suppressed.Count | Should Be 2
196
+ }
197
+
198
+ It " suppresses objects that match glob pattern with glob in the begining" {
199
+ $scriptDef = @'
200
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Scope='Function', Target='*-bar')]
201
+ param()
202
+ function start-foo {
203
+ write-host "start-foo"
204
+ }
205
+
206
+ function start-bar {
207
+ write-host "start-bar"
208
+ }
209
+
210
+ function start-baz {
211
+ write-host "start-baz"
212
+ }
213
+ '@
214
+ $suppressed = Invoke-ScriptAnalyzer - ScriptDefinition $scriptDef - IncludeRule ' PSAvoidUsingWriteHost' - SuppressedOnly
215
+ $suppressed.Count | Should Be 1
216
+ }
217
+ }
149
218
}
0 commit comments