private static Dictionary<string, NodeSymbolInfo> FindUnusedNodes(SyntaxNodeAnalysisContext context, ParametersInfo parametersInfo, bool isIndexer = false) { UnusedParameterWalker walker = UnusedParameterWalkerCache.Acquire(context.SemanticModel, context.CancellationToken, isIndexer); if (parametersInfo.Parameter != null && !StringUtility.IsOneOrManyUnderscores(parametersInfo.Parameter.Identifier.ValueText)) { walker.AddParameter(parametersInfo.Parameter); } else { foreach (ParameterSyntax parameter in parametersInfo.Parameters) { if (!StringUtility.IsOneOrManyUnderscores(parameter.Identifier.ValueText)) walker.AddParameter(parameter); } } foreach (TypeParameterSyntax typeParameter in parametersInfo.TypeParameters) { walker.AddTypeParameter(typeParameter); walker.IsAnyTypeParameter = true; } if (walker.Nodes.Count == 0) return walker.Nodes; walker.Visit(parametersInfo.Node); return UnusedParameterWalkerCache.GetNodesAndRelease(walker); }
private static Dictionary <string, NodeSymbolInfo> FindUnusedNodes(SyntaxNodeAnalysisContext context, ParametersInfo parametersInfo, bool isIndexer = false) { UnusedParameterWalker walker = UnusedParameterWalkerCache.Acquire(context.SemanticModel, context.CancellationToken, isIndexer); if (parametersInfo.Parameter != null) { walker.AddParameter(parametersInfo.Parameter); } else { foreach (ParameterSyntax parameter in parametersInfo.Parameters) { walker.AddParameter(parameter); } } foreach (TypeParameterSyntax typeParameter in parametersInfo.TypeParameters) { walker.AddTypeParameter(typeParameter); walker.IsAnyTypeParameter = true; } walker.Visit(parametersInfo.Node); return(UnusedParameterWalkerCache.GetNodesAndRelease(walker)); }
public static Dictionary <string, NodeSymbolInfo> GetNodesAndRelease(UnusedParameterWalker walker) { Dictionary <string, NodeSymbolInfo> nodes = walker.Nodes; Release(walker); return(nodes); }
public static UnusedParameterWalker Acquire(SemanticModel semanticModel, CancellationToken cancellationToken, bool isIndexer = false) { UnusedParameterWalker walker = _cachedInstance; if (walker != null) { _cachedInstance = null; walker.Reset(); } else { walker = new UnusedParameterWalker(); } walker.SemanticModel = semanticModel; walker.CancellationToken = cancellationToken; walker.IsIndexer = isIndexer; return(walker); }
public static void Release(UnusedParameterWalker walker) { _cachedInstance = walker; }