From 2f3bc46ac24734bd2cbf379753b8e904cfd3f816 Mon Sep 17 00:00:00 2001 From: Quoc Truong Date: Fri, 8 May 2015 12:00:57 -0700 Subject: [PATCH] Fix Function Member Ast cast error --- Rules/AvoidUninitializedVariable.cs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Rules/AvoidUninitializedVariable.cs b/Rules/AvoidUninitializedVariable.cs index 5579a068e..2872f0e56 100644 --- a/Rules/AvoidUninitializedVariable.cs +++ b/Rules/AvoidUninitializedVariable.cs @@ -50,7 +50,8 @@ public IEnumerable AnalyzeScript(Ast ast, string fileName) } } - IEnumerable funcAsts = ast.FindAll(item => item is FunctionDefinitionAst || item is FunctionMemberAst, true); + IEnumerable funcAsts = ast.FindAll(item => item is FunctionDefinitionAst, true); + IEnumerable funcMemberAsts = ast.FindAll(item => item is FunctionMemberAst, true); // Checks whether this is a dsc resource file (we don't raise this rule for get, set and test-target resource bool isDscResourceFile = Helper.Instance.IsDscResourceModule(fileName); @@ -83,6 +84,23 @@ public IEnumerable AnalyzeScript(Ast ast, string fileName) } } } + + foreach (FunctionMemberAst funcMemAst in funcMemberAsts) + { + // Finds all VariableExpressionAst. + IEnumerable varAsts = funcMemAst.FindAll(testAst => testAst is VariableExpressionAst, true); + + // Iterates all VariableExpressionAst and check the command name. + foreach (VariableExpressionAst varAst in varAsts) + { + if (Helper.Instance.IsUninitialized(varAst, funcMemAst)) + { + yield return new DiagnosticRecord(string.Format(CultureInfo.CurrentCulture, Strings.AvoidUninitializedVariableError, varAst.VariablePath.UserPath), + varAst.Extent, GetName(), DiagnosticSeverity.Warning, fileName, varAst.VariablePath.UserPath); + } + } + + } } ///