| File: ConfigureMethodVisitor.cs | Web Access |
| Project: src\aspnetcore\src\Analyzers\Analyzers\src\Microsoft.AspNetCore.Analyzers.csproj (Microsoft.AspNetCore.Analyzers) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; using Microsoft.CodeAnalysis; namespace Microsoft.AspNetCore.Analyzers; internal sealed class ConfigureMethodVisitor : SymbolVisitor { public static List<IMethodSymbol> FindConfigureMethods(StartupSymbols symbols, IAssemblySymbol assembly) { var visitor = new ConfigureMethodVisitor(symbols); visitor.Visit(assembly); return visitor._methods; } private readonly StartupSymbols _symbols; private readonly List<IMethodSymbol> _methods; private ConfigureMethodVisitor(StartupSymbols symbols) { _symbols = symbols; _methods = new List<IMethodSymbol>(); } public override void VisitAssembly(IAssemblySymbol symbol) { Visit(symbol.GlobalNamespace); } public override void VisitNamespace(INamespaceSymbol symbol) { foreach (var type in symbol.GetTypeMembers()) { Visit(type); } foreach (var @namespace in symbol.GetNamespaceMembers()) { Visit(@namespace); } } public override void VisitNamedType(INamedTypeSymbol symbol) { foreach (var member in symbol.GetMembers()) { Visit(member); } } public override void VisitMethod(IMethodSymbol symbol) { if (StartupFacts.IsConfigure(_symbols, symbol)) { _methods.Add(symbol); } } }