public override void Initialize(AnalysisContext analysisContext) { analysisContext.EnableConcurrentExecution(); analysisContext.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); analysisContext.RegisterCompilationStartAction( (context) => { INamedTypeSymbol iCollectionType = WellKnownTypes.ICollection(context.Compilation); INamedTypeSymbol genericICollectionType = WellKnownTypes.GenericICollection(context.Compilation); INamedTypeSymbol iEnumerableType = WellKnownTypes.IEnumerable(context.Compilation); INamedTypeSymbol genericIEnumerableType = WellKnownTypes.GenericIEnumerable(context.Compilation); INamedTypeSymbol iListType = WellKnownTypes.IList(context.Compilation); INamedTypeSymbol genericIListType = WellKnownTypes.GenericIList(context.Compilation); if (iCollectionType == null && genericICollectionType == null && iEnumerableType == null && genericIEnumerableType == null && iListType == null && genericIListType == null) { return; } context.RegisterSymbolAction(c => AnalyzeSymbol(c, iCollectionType, genericICollectionType, iEnumerableType, genericIEnumerableType, iListType, genericIListType), SymbolKind.NamedType); }); }