PowerShell / PowerShell/PSScriptAnalyzer

Suppressing a custom rule works in VSCode, but not from the commandline

Aperta
#1,344 3 commenti 2 reazioni 1 assegnatario Vedi su GitHub

@bergmeister ci sta già lavorando.

Dal 22/2/2023.

Area - Configuration
Lingua principale
C#
Stelle
2.2k
Fork
414
Merge medio
13h 1m
PR unite (30g)
2

Descrizione

Steps to reproduce

Unzip this: PSScriptAnalyzer - Custom rule suppression error.zip

The ZIP contains:

  • CustomRule.psm1
  • PSScriptAnalyzerSettings.psd1
  • Run Me.ps1
  • Suppress Testing.ps1
  • Errors.clixml
  • log.txt

Execute Run Me.ps1

Expected behavior

No errors.

Actual behavior

VSCode

Working OK. Custom rule suppressed, no squigglies:

image

Commandline

Got these errors:

Invoke-ScriptAnalyzer : Suppression Message Attribute error at line 4 in Suppress Testing.ps1 : Cannot find any DiagnosticRecord with the Rule Suppression ID undefinedVar.
At C:\Data\PowerShell\Miscellaneous\Issues\PSScriptAnalyzer - Custom rule suppression error\Run Me.ps1:3 char:1
+ Invoke-ScriptAnalyzer `
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (Microsoft.Windows.P…ric.RuleSuppression:RuleSuppression) [Invoke-ScriptAnalyzer], ArgumentException
+ FullyQualifiedErrorId : Suppression Message Attribute error at line 4 in Suppress Testing.ps1 : Cannot find any DiagnosticRecord with the Rule Suppression ID undefinedVar.,Microsoft.Windows.PowerShell.ScriptAnalyzer.Commands.InvokeScriptAnalyzerCommand

Invoke-ScriptAnalyzer : Suppression Message Attribute error at line 2 in Suppress Testing.ps1 : Cannot find any DiagnosticRecord with the Rule Suppression ID Var1.
At C:\Data\PowerShell\Miscellaneous\Issues\PSScriptAnalyzer - Custom rule suppression error\Run Me.ps1:3 char:1
+ Invoke-ScriptAnalyzer `
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (Microsoft.Windows.P…ric.RuleSuppression:RuleSuppression) [Invoke-ScriptAnalyzer], ArgumentException
+ FullyQualifiedErrorId : Suppression Message Attribute error at line 2 in Suppress Testing.ps1 : Cannot find any DiagnosticRecord with the Rule Suppression ID Var1.,Microsoft.Windows.PowerShell.ScriptAnalyzer.Commands.InvokeScriptAnalyzerCommand

I exported the errors to Errors.clixml. This is in the attached ZIP.

I set the custom rule to log the DiagnoticRecord. The log contained the following:

20190918 11:13:58:1358 - DiagnosticRecord: 
Message              : Avoid using non-local variables.
Extent               : $Var1
RuleName             : CustomRule\Measure-AvoidNonLocalVar
Severity             : Warning
ScriptName           : 
ScriptPath           : 
RuleSuppressionID    : Var1
SuggestedCorrections :
20190918 11:13:58:1358 - RuleSuppressionID check for leading/trailing spaces: >Var1<
20190918 11:13:58:1358 - RuleSuppressionID check property type              : System.String
--------------------------------------------------
20190918 11:13:58:1358 - DiagnosticRecord: 
Message              : Avoid using non-local variables.
Extent               : $undefinedVar
RuleName             : CustomRule\Measure-AvoidNonLocalVar
Severity             : Warning
ScriptName           : 
ScriptPath           : 
RuleSuppressionID    : undefinedVar
SuggestedCorrections :
20190918 11:13:58:1358 - RuleSuppressionID check for leading/trailing spaces: >undefinedVar<
20190918 11:13:58:1358 - RuleSuppressionID check property type              : System.String

The above shows that DiagnosticRecord with the required RuleSuppressionID were available.

Environment data

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.0.0-preview.3
PSEdition                      Core
GitCommitId                    7.0.0-preview.3
OS                             Microsoft Windows 10.0.18362
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0


> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }

1.18.3
1.18.2
1.18.1
1.18.0

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.