@@ -1473,6 +1473,28 @@ private Tuple<List<SuppressedRecord>, List<DiagnosticRecord>> SuppressRule(
14731473 return records ;
14741474 }
14751475
1476+ /// <summary>
1477+ /// Wrapper around SuppressRule method.
1478+ ///
1479+ /// This enables suppressing external rules (written in PowerShell).
1480+ /// Since there can be an inconsistency between the rule name in
1481+ /// diagnostic record and the actual rule (function) name, we use
1482+ /// the diagnostic record rule name for suppression
1483+ /// </summary>
1484+ /// <param name="ruleSuppressions"></param>
1485+ /// <param name="ruleDiagnosticRecord"></param>
1486+ /// <returns>Returns a tuple of suppressed and diagnostic records</returns>
1487+ private Tuple < List < SuppressedRecord > , List < DiagnosticRecord > > SuppressRule (
1488+ Dictionary < string , List < RuleSuppression > > ruleSuppressions ,
1489+ DiagnosticRecord ruleDiagnosticRecord
1490+ )
1491+ {
1492+ return SuppressRule (
1493+ ruleDiagnosticRecord . RuleName ,
1494+ ruleSuppressions ,
1495+ new List < DiagnosticRecord > { ruleDiagnosticRecord } ) ;
1496+ }
1497+
14761498 /// <summary>
14771499 /// Analyzes the syntax tree of a script file that has already been parsed.
14781500 /// </summary>
@@ -1770,13 +1792,21 @@ public IEnumerable<DiagnosticRecord> AnalyzeSyntaxTree(
17701792 }
17711793 }
17721794
1773- foreach ( var record in this . GetExternalRecord ( scriptAst , scriptTokens , exRules . ToArray ( ) , fileName ) )
1795+ foreach ( var ruleRecord in this . GetExternalRecord ( scriptAst , scriptTokens , exRules . ToArray ( ) , fileName ) )
17741796 {
1775- diagnostics . Add ( record ) ;
1797+ var records = SuppressRule ( ruleSuppressions , ruleRecord ) ;
1798+ foreach ( var record in records . Item2 )
1799+ {
1800+ diagnostics . Add ( record ) ;
1801+ }
1802+ foreach ( var suppressedRec in records . Item1 )
1803+ {
1804+ suppressed . Add ( suppressedRec ) ;
1805+ }
17761806 }
17771807 }
1778-
1779- #endregion
1808+
1809+ #endregion
17801810
17811811 // Need to reverse the concurrentbag to ensure that results are sorted in the increasing order of line numbers
17821812 IEnumerable < DiagnosticRecord > diagnosticsList = diagnostics . Reverse ( ) ;
0 commit comments