private ImmutableDictionary <string, ImmutableArray <DiagnosticDescriptor> > ConvertReferenceIdentityToName( ImmutableDictionary <object, ImmutableArray <DiagnosticDescriptor> > descriptorsPerReference, Project?project = null) { var map = _analyzerInfoCache.CreateAnalyzerReferencesMap(project); var builder = ImmutableDictionary.CreateBuilder <string, ImmutableArray <DiagnosticDescriptor> >(); foreach (var(id, descriptors) in descriptorsPerReference) { if (!map.TryGetValue(id, out var reference) || reference == null) { continue; } var displayName = GetDisplayName(reference); // if there are duplicates, merge descriptors if (builder.TryGetValue(displayName, out var existing)) { builder[displayName] = existing.AddRange(descriptors); continue; } builder.Add(displayName, descriptors); } return(builder.ToImmutable()); }
private TestDiagnosticAnalyzerService( DiagnosticAnalyzerInfoCache analyzerInfoCache, AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateSource, Action <Exception, DiagnosticAnalyzer, Diagnostic> onAnalyzerException, IDiagnosticUpdateSourceRegistrationService registrationService = null, IAsynchronousOperationListener listener = null) : base(analyzerInfoCache, hostDiagnosticUpdateSource, registrationService ?? new MockDiagnosticUpdateSourceRegistrationService(), listener) { _hostAnalyzerReferenceMap = analyzerInfoCache.CreateAnalyzerReferencesMap(project : null); _onAnalyzerException = onAnalyzerException; }