public override void Initialize(AnalysisContext analysisContext) { analysisContext.RegisterCompilationStartAction(compilationContext => { INamedTypeSymbol comparableType = WellKnownTypes.IComparable(compilationContext.Compilation); INamedTypeSymbol genericComparableType = WellKnownTypes.GenericIComparable(compilationContext.Compilation); // Even if one of them is available, we should continue analysis. if (comparableType == null && genericComparableType == null) { return; } compilationContext.RegisterSymbolAction(context => { AnalyzeSymbol((INamedTypeSymbol)context.Symbol, comparableType, genericComparableType, context.ReportDiagnostic); }, SymbolKind.NamedType); }); }
public override void Initialize(AnalysisContext analysisContext) { analysisContext.EnableConcurrentExecution(); analysisContext.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); analysisContext.RegisterCompilationStartAction(compilationContext => { INamedTypeSymbol comparableType = WellKnownTypes.IComparable(compilationContext.Compilation); INamedTypeSymbol genericComparableType = WellKnownTypes.GenericIComparable(compilationContext.Compilation); // Even if one of them is available, we should continue analysis. if (comparableType == null && genericComparableType == null) { return; } compilationContext.RegisterSymbolAction(context => { AnalyzeSymbol(context, comparableType, genericComparableType); }, SymbolKind.NamedType); }); }