真的,如何抑制 PowerShell 分析器规则

Kev*_*chs 5 powershell visual-studio-code powershell-core

MS 文档在这里:抑制规则,但在使用 VS Code 时它实际上并不像文档那样工作。我的脚本顶部有以下内容:

# Supress some analyzer (linter) diagnostics:
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingCmdletAliases','')]
Run Code Online (Sandbox Code Playgroud)

但是,分析器本身正在抱怨该声明“意外属性”。看起来像这样:

错误扩大

而且,谁愿意看到这一切红色!

未展开的

有趣的是,当我添加第二个类似的语句时,如下所示:

# Supress some analyzer (linter) diagnostics:
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSProvideCommentHelp','')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingCmdletAliases','')]
Run Code Online (Sandbox Code Playgroud)

第一个语句不再被标记为错误,只有第二个语句被标记为错误。

但是,最重要的是,我试图压制这些消息是行不通的。

我在这里阅读了 .NET 文档

我什至尝试添加

Add-Type -Path 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.Build.Workflow.dll'
Run Code Online (Sandbox Code Playgroud)

正如对这个问题的回答所建议的那样,但这没有什么区别。

我使用的是 PS Core 7.3.7,使用的是带有 .NET 7.0.5 的 Windows 10 Pro。和 VS 代码 1.82.1

San*_*zon 5

我相信你的问题是你试图在它应该使用的上下文之外使用装饰,你需要使用它来装饰一个param块。请参阅抑制规则

一个简单的例子,在抑制之前:

前

之后:

后

而且,如果我删除该param块,我会得到完全相同的解析错误:

错误


对于您的特定用例,为了抑制PSAvoidUsingCmdletAliases规则并遵循上述内容,您可以param()在脚本文件的顶部使用虚拟值,它应该可以正常工作: