我想知道为什么我会收到此消息?
The variable 'existModuleName' is assigned but never used.PSScriptAnalyzer(PSUseDeclaredVarsMoreThanAssignments)
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想重写代码,以便不显示该消息。
我想知道,这是错误还是语法错误?
function Get-SayHeyYou {
param(
)
[bool]$existModuleName = $false
(1..3) | ForEach-Object {
if ($_ -eq 2) {
$existModuleName = $true
}
}
if ($existModuleName) {
Write-Host "hey you!"
}
}
Get-SayHeyYou
Run Code Online (Sandbox Code Playgroud)
第一次分配后$false。当$_是时2,$true被赋值if,并用在最后if。
更重要的是,当我运行这段代码时,它会说“嘿你!” 正如预期的那样。我认为变量的范围没有任何问题。
我尝试添加Write-Host $existModuleName.
function Get-SayHeyYou {
param(
)
[bool]$existModuleName = $false
(1..3) | ForEach-Object {
if ($_ -eq 2) {
$existModuleName = $true
}
}
if ($existModuleName) {
Write-Host "hey you!"
Write-Host $existModuleName
}
}
Get-SayHeyYou
Run Code Online (Sandbox Code Playgroud)
我补充道Write-Host $ existModuleName。似乎没有什么特别的变化。
该代码的输出如下。
hey you!
True
Run Code Online (Sandbox Code Playgroud)
Powershell 7.1.5
Windows 10 专业版 21H1
VS代码
这是PSScriptAnalyzer 中众所周知的误报。你没有做错任何事。
\n您可以使用特殊属性内联禁用它,如下所示:
\nfunction Get-SayHeyYou {\n [Diagnostics.CodeAnalysis.SuppressMessageAttribute(\'PSUseDeclaredVarsMoreThanAssignments\', \'existModuleName\',\n Justification = \'variable is used in another scope\')]\n param()\n [bool]$existModuleName = $false\n (1..3) | ForEach-Object {\n if ($_ -eq 2) {\n $existModuleName = $true\n }\n }\n if ($existModuleName) {\n Write-Host "hey you!"\n }\n}\n\nGet-SayHeyYou\nRun Code Online (Sandbox Code Playgroud)\n如果您不想修改代码,您也可以通过包含 PSScriptAnalyzer 设置的文件来完全禁用该规则,然后您可以指向 vscode 来查看它。另请参阅此评论和其他一些评论。
\n这里还有一个示例存储库,展示了 vscode 和自定义规则设置的使用。
\n完全禁用该规则的缺点是,当您分配变量而不使用它时,您将错过合法时间。
\n但这是目前我们必须应对的权衡。
\n\xe9\xa0\x91\xe5\xbc\xb5\xe3\x81\xa3\xe3\x81\xa6\xe3\x81\xad\xef\xbc\x81
\n| 归档时间: |
|
| 查看次数: |
2654 次 |
| 最近记录: |