目標
我想知道,為什么我會收到此訊息?
The variable 'existModuleName' is assigned but never used.PSScriptAnalyzer(PSUseDeclaredVarsMoreThanAssignments)

如果可能,我想重寫代碼以便不顯示訊息。
我想知道,這是錯誤還是語法錯誤?
代碼
function Get-SayHeyYou {
param(
)
[bool]$existModuleName = $false
(1..3) | ForEach-Object {
if ($_ -eq 2) {
$existModuleName = $true
}
}
if ($existModuleName) {
Write-Host "hey you!"
}
}
Get-SayHeyYou
我的想法
第一次賦值后$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
我補充說Write-Host $ existModuleName。似乎沒有什么特別的變化。
此代碼的輸出如下。
hey you!
True
環境
Powershell 7.1.5
視窗 10 專業版 21H1
VS代碼
- 版本:1.61.2(系統設定)
- 提交:6cba118ac49a1b88332f312a8f67186f7f3c1643
- 日期:2021-10-19T14:57:20.575Z
- 電子:13.5.1
- 鉻:91.0.4472.164
- Node.js:14.16.0
- V8:9.1.269.39-electron.0
- 作業系統:Windows_NT x64 10.0.19043
uj5u.com熱心網友回復:
這是PSScriptAnalyzer 中眾所周知的誤報。你沒有做錯任何事。
您可以使用特殊屬性行內禁用它,如下所示:
function Get-SayHeyYou {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'existModuleName',
Justification = 'variable is used in another scope')]
param()
[bool]$existModuleName = $false
(1..3) | ForEach-Object {
if ($_ -eq 2) {
$existModuleName = $true
}
}
if ($existModuleName) {
Write-Host "hey you!"
}
}
Get-SayHeyYou
如果你不想修改代碼,你也可以通過包含你的 PSScriptAnalyzer 設定的檔案來完全禁用規則,然后你可以指向 vscode 來查看它。另請參閱此評論和其他一些評論。
這里還有一個示例存盤庫,顯示與 vscode 和自定義規則設定一起使用。
完全禁用規則的缺點是當你分配一個變數而不使用它時,你會錯過合法的時間。
但這是目前我們必須應對的權衡。
頑張ってね!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348766.html
標籤:电源外壳
