PowerShell / PowerShell/PSScriptAnalyzer

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

Abierto
#1,344 3 comentarios 2 reacciones 1 asignado Ver en GitHub

@bergmeister ya está trabajando en esto.

Desde el 22/2/2023.

Area - Configuration
Lenguaje dominante
C#
Estrellas
2.2k
Forks
414
Merge medio
13 h 1 min
PR fusionados (30 d)
2

Descripción

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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.