Skip to content

Commit 58fc7f3

Browse files
Add suppression for Write-Host usage in PSScriptAnalyzer tests for improved logging clarity
1 parent fac919e commit 58fc7f3

File tree

1 file changed

+42
-36
lines changed

1 file changed

+42
-36
lines changed

scripts/tests/PSScriptAnalyzer/PSScriptAnalyzer.Tests.ps1

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
'PSUseDeclaredVarsMoreThanAssignments', '',
77
Justification = 'Pester blocks line of sight during analysis.'
88
)]
9+
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
10+
'PSAvoidUsingWriteHost', '',
11+
Justification = 'Write-Host is used for log output.'
12+
)]
913
[CmdLetBinding()]
1014
Param(
1115
[Parameter(Mandatory)]
@@ -16,44 +20,46 @@ Param(
1620
)
1721

1822
BeforeDiscovery {
19-
$settings = Import-PowerShellDataFile -Path $SettingsFilePath
20-
$rules = [Collections.Generic.List[System.Collections.Specialized.OrderedDictionary]]::new()
21-
$ruleObjects = Get-ScriptAnalyzerRule -Verbose:$false | Sort-Object -Property Severity, CommonName
22-
$Severeties = $ruleObjects | Select-Object -ExpandProperty Severity -Unique
23-
foreach ($ruleObject in $ruleObjects) {
24-
$skip = if ($ruleObject.RuleName -in $settings.ExcludeRules) {
25-
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
26-
Write-Host " Skipping rule - Exclude list" -ForegroundColor DarkGray
27-
$true
28-
} elseif ($settings.IncludeRules -and $ruleObject.RuleName -notin $settings.IncludeRules) {
29-
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
30-
Write-Host ' Skipping rule - Include list' -ForegroundColor DarkGray
31-
$true
32-
} elseif ($settings.Severity -and $ruleObject.Severity -notin $settings.Severity) {
33-
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
34-
Write-Host ' Skipping rule - Severity list' -ForegroundColor DarkGray
35-
$true
36-
} elseif ($settings.Rules -and $settings.Rules.ContainsKey($ruleObject.RuleName) -and -not $settings.Rules[$ruleObject.RuleName].Enable) {
37-
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
38-
Write-Host ' Skipping rule - Disabled' -ForegroundColor DarkGray
39-
$true
40-
} else {
41-
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor Green
42-
$false
43-
}
44-
45-
$rules.Add(
46-
[ordered]@{
47-
RuleName = $ruleObject.RuleName
48-
CommonName = $ruleObject.CommonName
49-
Severity = $ruleObject.Severity
50-
Description = $ruleObject.Description
51-
Skip = $skip
23+
LogGroup "PSScriptAnalyzer tests using settings file [$SettingsFilePath]" {
24+
$settings = Import-PowerShellDataFile -Path $SettingsFilePath
25+
$rules = [Collections.Generic.List[System.Collections.Specialized.OrderedDictionary]]::new()
26+
$ruleObjects = Get-ScriptAnalyzerRule -Verbose:$false | Sort-Object -Property Severity, CommonName
27+
$Severeties = $ruleObjects | Select-Object -ExpandProperty Severity -Unique
28+
foreach ($ruleObject in $ruleObjects) {
29+
$skip = if ($ruleObject.RuleName -in $settings.ExcludeRules) {
30+
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
31+
Write-Host ' Skipping rule - Exclude list' -ForegroundColor DarkGray
32+
$true
33+
} elseif ($settings.IncludeRules -and $ruleObject.RuleName -notin $settings.IncludeRules) {
34+
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
35+
Write-Host ' Skipping rule - Include list' -ForegroundColor DarkGray
36+
$true
37+
} elseif ($settings.Severity -and $ruleObject.Severity -notin $settings.Severity) {
38+
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
39+
Write-Host ' Skipping rule - Severity list' -ForegroundColor DarkGray
40+
$true
41+
} elseif ($settings.Rules -and $settings.Rules.ContainsKey($ruleObject.RuleName) -and -not $settings.Rules[$ruleObject.RuleName].Enable) {
42+
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor DarkGray
43+
Write-Host ' Skipping rule - Disabled' -ForegroundColor DarkGray
44+
$true
45+
} else {
46+
Write-Host " - $($ruleObject.RuleName)" -ForegroundColor Green
47+
$false
5248
}
53-
)
49+
50+
$rules.Add(
51+
[ordered]@{
52+
RuleName = $ruleObject.RuleName
53+
CommonName = $ruleObject.CommonName
54+
Severity = $ruleObject.Severity
55+
Description = $ruleObject.Description
56+
Skip = $skip
57+
}
58+
)
59+
}
60+
Write-Warning "Discovered [$($rules.Count)] rules"
61+
$relativeSettingsFilePath = $SettingsFilePath.Replace($PSScriptRoot, '').Trim('\').Trim('/')
5462
}
55-
Write-Warning "Discovered [$($rules.Count)] rules"
56-
$relativeSettingsFilePath = $SettingsFilePath.Replace($PSScriptRoot, '').Trim('\').Trim('/')
5763
}
5864

5965
Describe "PSScriptAnalyzer tests using settings file [$relativeSettingsFilePath]" {

0 commit comments

Comments
 (0)