Skip to content

Commit ba547fc

Browse files
author
Quoc Truong
committed
Merge pull request #205 from PowerShell/FixUseDeclaredVarsMoreThanAssignment
Fix use declared vars more than assignment
2 parents 98e8d3a + 4c45a16 commit ba547fc

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

Rules/UseDeclaredVarsMoreThanAssignments.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ public IEnumerable<DiagnosticRecord> AnalyzeScript(Ast ast, string fileName)
4949
{
5050
foreach (AssignmentStatementAst assignmentAst in assignmentAsts)
5151
{
52-
assingmentVarAsts = assignmentAst.Left.FindAll(testAst => testAst is VariableExpressionAst, true); ;
52+
// Only checks for the case where lhs is a variable. Ignore things like $foo.property
53+
VariableExpressionAst assignmentVarAst = assignmentAst.Left as VariableExpressionAst;
5354

54-
foreach (VariableExpressionAst assignmentVarAst in assingmentVarAsts)
55+
if (assignmentVarAst != null)
5556
{
56-
//Ignore if variable is global or environment variable
57-
if (!Helper.Instance.IsVariableGlobalOrEnvironment(assignmentVarAst, ast))
57+
//Ignore if variable is global or environment variable
58+
if (!Helper.Instance.IsVariableGlobalOrEnvironment(assignmentVarAst, ast)
59+
&& !assignmentVarAst.VariablePath.IsScript)
5860
{
5961
if (!assignments.ContainsKey(assignmentVarAst.VariablePath.UserPath))
6062
{
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
$declaredVars = "Declared Vars"
2-
Write-Ouput $declaredVars
2+
Write-Ouput $declaredVars
3+
$script:thisshouldnotraiseerrors = "this should not raise errors"
4+
$foo.property = "This also should not raise errors"

0 commit comments

Comments
 (0)