From 8326665c478288562f4a5afe88be432b4d8b0edb Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Sun, 1 Apr 2018 10:56:42 +0100 Subject: [PATCH 1/2] Make UseDeclaredVarsMoreThanAssignments not flag anything for drive qualified variables --- Rules/UseDeclaredVarsMoreThanAssignments.cs | 4 ++-- Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Rules/UseDeclaredVarsMoreThanAssignments.cs b/Rules/UseDeclaredVarsMoreThanAssignments.cs index 296d79da9..fc72e18ea 100644 --- a/Rules/UseDeclaredVarsMoreThanAssignments.cs +++ b/Rules/UseDeclaredVarsMoreThanAssignments.cs @@ -141,10 +141,10 @@ private IEnumerable AnalyzeScriptBlockAst(ScriptBlockAst scrip if (assignmentVarAst != null) { - // Ignore if variable is global or environment variable or scope is function + // Ignore if variable is global or environment variable or scope is drive qualified variable if (!Helper.Instance.IsVariableGlobalOrEnvironment(assignmentVarAst, scriptBlockAst) && !assignmentVarAst.VariablePath.IsScript - && !string.Equals(assignmentVarAst.VariablePath.DriveName, "function", StringComparison.OrdinalIgnoreCase)) + && assignmentVarAst.VariablePath.DriveName == null) { string variableName = Helper.Instance.VariableNameWithoutScope(assignmentVarAst.VariablePath); diff --git a/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 b/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 index 4e4f43df7..630873245 100644 --- a/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 +++ b/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 @@ -83,5 +83,10 @@ function MyFunc2() { $results = Invoke-ScriptAnalyzer -ScriptDefinition '$list | ForEach-Object { $array += $c }' | Where-Object { $_.RuleName -eq $violationName } $results.Count | Should -Be 0 } + + It "Does not flag drive qualified variables such as env" { + $results = Invoke-ScriptAnalyzer -ScriptDefinition '$env:foo = 1; function foo($env:bar = 42)' + $results.Count | Should -Be 0 + } } } \ No newline at end of file From 7a06b9c10a831f35f295bd90b2f185cc6565fa91 Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Sun, 1 Apr 2018 11:34:45 +0100 Subject: [PATCH 2/2] fix test syntax --- Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 b/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 index 630873245..d10d77b4c 100644 --- a/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 +++ b/Tests/Rules/UseDeclaredVarsMoreThanAssignments.tests.ps1 @@ -85,7 +85,7 @@ function MyFunc2() { } It "Does not flag drive qualified variables such as env" { - $results = Invoke-ScriptAnalyzer -ScriptDefinition '$env:foo = 1; function foo($env:bar = 42)' + $results = Invoke-ScriptAnalyzer -ScriptDefinition '$env:foo = 1; function foo(){ $env:bar = 42 }' $results.Count | Should -Be 0 } }