public void Clear() { _schema = null; Path.Clear(); Fragments.Clear(); UsedVariables.Clear(); UnusedVariables.Clear(); DeclaredVariables.Clear(); Errors.Clear(); }
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; }
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); }