PowerShell / PowerShell/PSScriptAnalyzer

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

未關閉
#1,344 3 則留言 2 個 reaction 已指派 1 人 在 GitHub 檢視

@bergmeister 已經在處理了。

開始於 2023年2月22日。

Area - Configuration
主要語言
C#
星號
2.2k
分支
415
平均合併
13 小時 1 分鐘
30 天內合併 PR
2

描述

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

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。