在这段代码中,我收到了PSScriptAnalyzer发出的“ UseDeclaredVarsMoreThanAssignments”警告
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data);
}
触发警告的变量在此行中为$lastUpdate = $false;
$shouldUpdate = $false;
if (Test-Path $logfile) {
(Get-Content $logfile) | Where-Object {
$_ -match "([^-]*)->\s*UpdateCheck"
} | ForEach-Object {
$lastUpdate = $Matches[1]
}
if ($lastUpdate) {
$shouldUpdate = (Get-Date $Matches[1]) -lt ((Get-Date).AddDays(-7))
} else {
$shouldUpdate = $true;
}
}
:
$lastUpdate
尽管在下一行中使用了它。
这是我的代码有问题吗-我猜这与范围和$lastUpdate = $Matches[1]
循环有关-还是VSCode中的PSScriptAnalyzer有问题?
答案 0 :(得分:0)
如评论中所述,该错误在#1164处发布
作为解决方法,您可以考虑使用NSAnimationContext.runAnimationGroup( { current in
current.allowsImplicitAnimation = false
current.duration = 0
outlineView.scrollRowToVisible(selectedRows.first!)
}, completionHandler: nil)
语句而不是ForEach
cmdlet(请参阅:Difference between ForEach and ForEach-Object in powershell):
ForEach-Object
就您而言,您甚至可以将语句简化为:
ForEach ($Item in ((Get-Content $logfile) | Where-Object {$_ -match "([^-]*)->\s*UpdateCheck"})) {
$lastUpdate = $Matches[1]
}
在此示例中,$lastUpdate = (Get-Content $logfile) | Where-Object {$_ -match "([^-]*)->\s*UpdateCheck"}
表示匹配项集合,如果包含一个或多个项目,则强制转换为$lastUpdate
,如果不包含任何匹配项,则强制转换为$True
。 / p>