Skip to content

Commit 1a8d285

Browse files
authored
Make UseDeclaredVarsMoreThanAssignments not flag drive qualified variables (#958)
* Make UseDeclaredVarsMoreThanAssignments not flag anything for drive qualified variables * fix test syntax
1 parent 6a8e828 commit 1a8d285

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Rules/UseDeclaredVarsMoreThanAssignments.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ private IEnumerable<DiagnosticRecord> AnalyzeScriptBlockAst(ScriptBlockAst scrip
141141

142142
if (assignmentVarAst != null)
143143
{
144-
// Ignore if variable is global or environment variable or scope is function
144+
// Ignore if variable is global or environment variable or scope is drive qualified variable
145145
if (!Helper.Instance.IsVariableGlobalOrEnvironment(assignmentVarAst, scriptBlockAst)
146146
&& !assignmentVarAst.VariablePath.IsScript
147-
&& !string.Equals(assignmentVarAst.VariablePath.DriveName, "function", StringComparison.OrdinalIgnoreCase))
147+
&& assignmentVarAst.VariablePath.DriveName == null)
148148
{
149149
string variableName = Helper.Instance.VariableNameWithoutScope(assignmentVarAst.VariablePath);
150150

Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,10 @@ function MyFunc2() {
8383
$results = Invoke-ScriptAnalyzer -ScriptDefinition '$list | ForEach-Object { $array += $c }' | Where-Object { $_.RuleName -eq $violationName }
8484
$results.Count | Should -Be 0
8585
}
86+
87+
It "Does not flag drive qualified variables such as env" {
88+
$results = Invoke-ScriptAnalyzer -ScriptDefinition '$env:foo = 1; function foo(){ $env:bar = 42 }'
89+
$results.Count | Should -Be 0
90+
}
8691
}
8792
}

0 commit comments

Comments
 (0)