Example #1
0
 public void Clear()
 {
     _schema = null;
     Path.Clear();
     Fragments.Clear();
     UsedVariables.Clear();
     UnusedVariables.Clear();
     DeclaredVariables.Clear();
     Errors.Clear();
 }
Example #2
0
 public void Clear()
 {
     _schema = null;
     Path.Clear();
     Variables.Clear();
     Fragments.Clear();
     UsedVariables.Clear();
     UnusedVariables.Clear();
     DeclaredVariables.Clear();
     Names.Clear();
     Types.Clear();
     Directives.Clear();
     OutputFields.Clear();
     InputFields.Clear();
     Errors.Clear();
     IsInError = false;
 }
Example #3
0
        private static void LoadUnusedVariables(SyntaxTree tree, ClassDetail partialClass, SemanticModel semanticModel)
        {
            var methods = tree
                          .GetRoot()
                          .GetMethods();

            var location = CreateLocationNode(partialClass);

            foreach (var method in methods)
            {
                if (method.Body == null)
                {
                    continue;
                }

                var dataFlow           = semanticModel.AnalyzeDataFlow(method.Body);
                var variablesDeclared  = dataFlow.VariablesDeclared.Where(x => x.Kind == SymbolKind.Local);
                var parametersDeclared = dataFlow.WrittenOutside.Where(x => x.Kind == SymbolKind.Parameter);
                var variablesRead      = dataFlow.ReadInside.Union(dataFlow.ReadOutside).ToList();

                var unused = variablesDeclared.Except(variablesRead).ToList();
                unused.AddRange(parametersDeclared.Except(variablesRead));
                if (unused.Any())
                {
                    foreach (var unusedVar in unused)
                    {
                        var foreachStatements = method.DescendantNodes <ForEachStatementSyntax>()
                                                .Any(x => x.Identifier.Text == unusedVar.Name);
                        if (foreachStatements)
                        {
                            continue;
                        }

                        location.Locations.Add(unusedVar.Locations.First());
                    }
                }
            }

            UnusedVariables.Add(location);
        }