Skip to content

Commit a15d260

Browse files
authored
Translate RuleSuppressionID for custom rules as well (#1144)
* Populate RuleSuppressionID as well when translating DiagnosticRecord in custom rules * fix NullReferenceException
1 parent 55d98f2 commit a15d260

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

Engine/ScriptAnalyzer.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1262,6 +1262,7 @@ internal IEnumerable<DiagnosticRecord> GetExternalRecord(Ast ast, Token[] token,
12621262
IScriptExtent extent;
12631263
string message = string.Empty;
12641264
string ruleName = string.Empty;
1265+
string ruleSuppressionID = string.Empty;
12651266
IEnumerable<CorrectionExtent> suggestedCorrections;
12661267

12671268
if (psobject != null && psobject.ImmediateBaseObject != null)
@@ -1282,6 +1283,7 @@ internal IEnumerable<DiagnosticRecord> GetExternalRecord(Ast ast, Token[] token,
12821283
message = psobject.Properties["Message"].Value.ToString();
12831284
extent = (IScriptExtent)psobject.Properties["Extent"].Value;
12841285
ruleName = psobject.Properties["RuleName"].Value.ToString();
1286+
ruleSuppressionID = psobject.Properties["RuleSuppressionID"].Value?.ToString();
12851287
suggestedCorrections = (IEnumerable<CorrectionExtent>)psobject.Properties["SuggestedCorrections"].Value;
12861288
}
12871289
catch (Exception ex)
@@ -1292,7 +1294,11 @@ internal IEnumerable<DiagnosticRecord> GetExternalRecord(Ast ast, Token[] token,
12921294

12931295
if (!string.IsNullOrEmpty(message))
12941296
{
1295-
diagnostics.Add(new DiagnosticRecord(message, extent, ruleName, severity, filePath) { SuggestedCorrections = suggestedCorrections });
1297+
diagnostics.Add(new DiagnosticRecord(message, extent, ruleName, severity, filePath)
1298+
{
1299+
SuggestedCorrections = suggestedCorrections,
1300+
RuleSuppressionID = ruleSuppressionID,
1301+
});
12961302
}
12971303
}
12981304
}

ScriptRuleDocumentation.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ $suggestedCorrections.add($correctionExtent) | out-null
7979
"Extent" = $ast.Extent
8080
"RuleName" = $PSCmdlet.MyInvocation.InvocationName
8181
"Severity" = "Warning"
82+
"Severity" = "Warning"
83+
"RuleSuppressionID" = "MyRuleSuppressionID"
8284
"SuggestedCorrections" = $suggestedCorrections
8385
}
8486
```

Tests/Engine/CustomizedRule.tests.ps1

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,11 @@ Describe "Test importing correct customized rules" {
171171
Where-Object { $_.Message -eq $message }
172172

173173
$customizedRulePath.Count | Should -Be 0
174+
}
175+
176+
It "will set RuleSuppressionID" {
177+
$violations = Invoke-ScriptAnalyzer $directory\TestScript.ps1 -CustomizedRulePath $directory\samplerule
178+
$violations[0].RuleSuppressionID | Should -Be "MyRuleSuppressionID"
174179
}
175180

176181
if (!$testingLibraryUsage)

Tests/Engine/samplerule/samplerule.psm1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ function Measure-RequiresRunAsAdministrator
3737
$dr = New-Object `
3838
-Typename "Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticRecord" `
3939
-ArgumentList "This is help",$extent,$PSCmdlet.MyInvocation.InvocationName,Warning,$null,$null,$l
40-
return $dr
40+
$dr.RuleSuppressionID = "MyRuleSuppressionID"
41+
return $dr
4142
}
4243
Export-ModuleMember -Function Measure*

0 commit comments

Comments
 (0)