public static async Task <LatestDiagnosticsForSpanGetter> CreateAsync( DiagnosticIncrementalAnalyzer owner, Document document, TextSpan range, bool blockForData, bool includeSuppressedDiagnostics = false, string?diagnosticId = null, CancellationToken cancellationToken = default) { // REVIEW: IsAnalyzerSuppressed can be quite expensive in some cases. try to find a way to make it cheaper // Here we don't filter out hidden diagnostic only analyzer since such analyzer can produce hidden diagnostic // on active file (non local diagnostic) var stateSets = owner._stateManager .GetOrCreateStateSets(document.Project).Where(s => !owner.AnalyzerService.IsAnalyzerSuppressed(s.Analyzer, document.Project)); // filter to specific diagnostic it is looking for if (diagnosticId != null) { stateSets = stateSets.Where(s => owner.AnalyzerService.GetDiagnosticDescriptors(s.Analyzer).Any(d => d.Id == diagnosticId)).ToList(); } var compilation = await owner.CreateCompilationWithAnalyzersAsync(document.Project, stateSets, includeSuppressedDiagnostics, cancellationToken).ConfigureAwait(false); return(new LatestDiagnosticsForSpanGetter(owner, compilation, document, stateSets, diagnosticId, range, blockForData, includeSuppressedDiagnostics)); }
public IncrementalAnalyzerDelegatee(DiagnosticAnalyzerService owner, Workspace workspace, HostAnalyzerManager hostAnalyzerManager, AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateSource) : base(owner, workspace, hostAnalyzerManager, hostDiagnosticUpdateSource) { var v2CorrelationId = LogAggregator.GetNextId(); _engineV2 = new EngineV2.DiagnosticIncrementalAnalyzer(owner, v2CorrelationId, workspace, hostAnalyzerManager, hostDiagnosticUpdateSource); }
public static async Task <LatestDiagnosticsForSpanGetter> CreateAsync( DiagnosticIncrementalAnalyzer owner, Document document, TextSpan?range, bool blockForData, Func <string, IDisposable?>?addOperationScope, bool includeSuppressedDiagnostics, CodeActionRequestPriority priority, string?diagnosticId, CancellationToken cancellationToken) { var stateSets = owner._stateManager .GetOrCreateStateSets(document.Project).Where(s => !owner.DiagnosticAnalyzerInfoCache.IsAnalyzerSuppressed(s.Analyzer, document.Project)); // filter to specific diagnostic it is looking for if (diagnosticId != null) { stateSets = stateSets.Where(s => owner.DiagnosticAnalyzerInfoCache.GetDiagnosticDescriptors(s.Analyzer).Any(d => d.Id == diagnosticId)).ToList(); } var compilationWithAnalyzers = await CreateCompilationWithAnalyzersAsync(document.Project, stateSets, includeSuppressedDiagnostics, cancellationToken).ConfigureAwait(false); return(new LatestDiagnosticsForSpanGetter( owner, compilationWithAnalyzers, document, stateSets, diagnosticId, range, blockForData, addOperationScope, includeSuppressedDiagnostics, priority)); }
public DiagnosticGetter( DiagnosticIncrementalAnalyzer owner, Solution solution, ProjectId projectId, DocumentId documentId, object id, bool includeSuppressedDiagnostics) { Owner = owner; CurrentSolution = solution; CurrentDocumentId = documentId; CurrentProjectId = projectId ?? documentId?.ProjectId; Id = id; IncludeSuppressedDiagnostics = includeSuppressedDiagnostics; // try to retrieve projectId/documentId from id if possible. if (id is LiveDiagnosticUpdateArgsId argsId) { CurrentDocumentId ??= argsId.Key as DocumentId; CurrentProjectId ??= (argsId.Key as ProjectId) ?? CurrentDocumentId.ProjectId; } _builder = null; }
public DiagnosticGetter( DiagnosticIncrementalAnalyzer owner, Solution solution, ProjectId projectId, DocumentId documentId, object id, bool includeSuppressedDiagnostics) { Owner = owner; CurrentSolution = solution; CurrentDocumentId = documentId; CurrentProjectId = projectId ?? documentId?.ProjectId; Id = id; IncludeSuppressedDiagnostics = includeSuppressedDiagnostics; // try to retrieve projectId/documentId from id if possible. var argsId = id as LiveDiagnosticUpdateArgsId; if (argsId != null) { CurrentDocumentId = CurrentDocumentId ?? argsId.Key as DocumentId; CurrentProjectId = CurrentProjectId ?? (argsId.Key as ProjectId) ?? CurrentDocumentId.ProjectId; } _builder = null; }
private LatestDiagnosticsForSpanGetter( DiagnosticIncrementalAnalyzer owner, CompilationWithAnalyzers?compilationWithAnalyzers, Document document, IEnumerable <StateSet> stateSets, Func <string, bool>?shouldIncludeDiagnostic, bool includeCompilerDiagnostics, TextSpan?range, bool blockForData, Func <string, IDisposable?>?addOperationScope, bool includeSuppressedDiagnostics, CodeActionRequestPriority priority) { _owner = owner; _compilationWithAnalyzers = compilationWithAnalyzers; _document = document; _stateSets = stateSets; _shouldIncludeDiagnostic = shouldIncludeDiagnostic; _includeCompilerDiagnostics = includeCompilerDiagnostics; _range = range; _blockForData = blockForData; _addOperationScope = addOperationScope; _includeSuppressedDiagnostics = includeSuppressedDiagnostics; _priority = priority; }
public IdeCachedDiagnosticGetter( DiagnosticIncrementalAnalyzer owner, Solution solution, ProjectId?projectId, DocumentId?documentId, bool includeSuppressedDiagnostics ) : base(owner, solution, projectId, documentId, includeSuppressedDiagnostics) { }
public IncrementalAnalyzerDelegatee(DiagnosticAnalyzerService owner, Workspace workspace, HostAnalyzerManager hostAnalyzerManager, AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateSource) : base(owner, workspace, hostAnalyzerManager, hostDiagnosticUpdateSource) { var v1CorrelationId = LogAggregator.GetNextId(); _engineV1 = new EngineV1.DiagnosticIncrementalAnalyzer(owner, v1CorrelationId, workspace, hostAnalyzerManager, hostDiagnosticUpdateSource); var v2CorrelationId = LogAggregator.GetNextId(); _engineV2 = new EngineV2.DiagnosticIncrementalAnalyzer(owner, v2CorrelationId, workspace, hostAnalyzerManager, hostDiagnosticUpdateSource); }
public static async Task <LatestDiagnosticsForSpanGetter> CreateAsync( DiagnosticIncrementalAnalyzer owner, Document document, TextSpan range, bool blockForData, bool includeSuppressedDiagnostics, CancellationToken cancellationToken) { // REVIEW: IsAnalyzerSuppressed can be quite expensive in some cases. try to find a way to make it cheaper var stateSets = owner._stateManager.GetOrCreateStateSets(document.Project).Where(s => !owner.Owner.IsAnalyzerSuppressed(s.Analyzer, document.Project)); var analyzerDriverOpt = await owner._compilationManager.CreateAnalyzerDriverAsync(document.Project, stateSets, includeSuppressedDiagnostics, cancellationToken).ConfigureAwait(false); return(new LatestDiagnosticsForSpanGetter(owner, analyzerDriverOpt, document, stateSets, range, blockForData, includeSuppressedDiagnostics)); }
private async Task <DiagnosticAnalysisResultMap <DiagnosticAnalyzer, DiagnosticAnalysisResult> > GetCompilerAnalysisResultAsync(Stream stream, Dictionary <string, DiagnosticAnalyzer> analyzerMap, Project project, CancellationToken cancellationToken) { // handling of cancellation and exception var version = await DiagnosticIncrementalAnalyzer.GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); using var reader = ObjectReader.TryGetReader(stream); Debug.Assert(reader != null, @"We only ge a reader for data transmitted between live processes. This data should always be correct as we're never persisting the data between sessions."); return(DiagnosticResultSerializer.Deserialize(reader, analyzerMap, project, version, cancellationToken)); }
public IdeLatestDiagnosticGetter( DiagnosticIncrementalAnalyzer owner, Solution solution, ProjectId?projectId, DocumentId?documentId, ImmutableHashSet <string>?diagnosticIds, bool includeSuppressedDiagnostics ) : base(owner, solution, projectId, documentId, includeSuppressedDiagnostics) { _diagnosticIds = diagnosticIds; }
public IncrementalAnalyzerDelegatee(DiagnosticAnalyzerService owner, Workspace workspace, AnalyzerManager analyzerManager) { _workspace = workspace; _analyzerManager = analyzerManager; _owner = owner; var v1CorrelationId = LogAggregator.GetNextId(); _engineV1 = new EngineV1.DiagnosticIncrementalAnalyzer(_owner, v1CorrelationId, _workspace, _analyzerManager); var v2CorrelationId = LogAggregator.GetNextId(); _engineV2 = new EngineV2.DiagnosticIncrementalAnalyzer(_owner, v2CorrelationId, _workspace, _analyzerManager); }
public IncrementalAnalyzerDelegatee(DiagnosticAnalyzerService owner, Workspace workspace, WorkspaceAnalyzerManager workspaceAnalyzerManager, AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateSource) : base(workspace, hostDiagnosticUpdateSource) { _workspaceAnalyzerManager = workspaceAnalyzerManager; _owner = owner; var v1CorrelationId = LogAggregator.GetNextId(); _engineV1 = new EngineV1.DiagnosticIncrementalAnalyzer(_owner, v1CorrelationId, workspace, _workspaceAnalyzerManager, hostDiagnosticUpdateSource); var v2CorrelationId = LogAggregator.GetNextId(); _engineV2 = new EngineV2.DiagnosticIncrementalAnalyzer(_owner, v2CorrelationId, workspace, _workspaceAnalyzerManager, hostDiagnosticUpdateSource); }
public static async Task <ImmutableDictionary <DiagnosticAnalyzer, AnalysisResult> > AnalyzeAsync(this CompilationWithAnalyzers analyzerDriver, Project project, CancellationToken cancellationToken) { var version = await DiagnosticIncrementalAnalyzer.GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); // Run all analyzers at once. // REVIEW: why there are 2 different cancellation token? one that I can give to constructor and one I can give in to each method? // REVIEW: we drop all those allocations for the diagnostics returned. can we avoid this? await analyzerDriver.GetAnalyzerDiagnosticsAsync(cancellationToken).ConfigureAwait(false); // this is wierd, but now we iterate through each analyzer for each tree to get cached result. // REVIEW: no better way to do this? var noSpanFilter = default(TextSpan?); var analyzers = analyzerDriver.Analyzers; var compilation = analyzerDriver.Compilation; var builder = ImmutableDictionary.CreateBuilder <DiagnosticAnalyzer, AnalysisResult>(); foreach (var analyzer in analyzers) { var result = new Builder(project, version); // REVIEW: more unnecessary allocations just to get diagnostics per analyzer var oneAnalyzers = ImmutableArray.Create(analyzer); foreach (var tree in compilation.SyntaxTrees) { var model = compilation.GetSemanticModel(tree); var syntax = await analyzerDriver.GetAnalyzerSyntaxDiagnosticsAsync(tree, oneAnalyzers, cancellationToken).ConfigureAwait(false); Contract.Requires(syntax.Count() == CompilationWithAnalyzers.GetEffectiveDiagnostics(syntax, analyzerDriver.Compilation).Count()); result.AddSyntaxDiagnostics(tree, syntax); var semantic = await analyzerDriver.GetAnalyzerSemanticDiagnosticsAsync(model, noSpanFilter, oneAnalyzers, cancellationToken).ConfigureAwait(false); Contract.Requires(semantic.Count() == CompilationWithAnalyzers.GetEffectiveDiagnostics(semantic, analyzerDriver.Compilation).Count()); result.AddSemanticDiagnostics(tree, semantic); } var rest = await analyzerDriver.GetAnalyzerCompilationDiagnosticsAsync(oneAnalyzers, cancellationToken).ConfigureAwait(false); Contract.Requires(rest.Count() == CompilationWithAnalyzers.GetEffectiveDiagnostics(rest, analyzerDriver.Compilation).Count()); result.AddCompilationDiagnostics(rest); builder.Add(analyzer, result.ToResult()); } return(builder.ToImmutable()); }
public static async Task <ImmutableDictionary <DiagnosticAnalyzer, AnalysisResult> > AnalyzeAsync(this CompilationWithAnalyzers analyzerDriver, Project project, CancellationToken cancellationToken) { var version = await DiagnosticIncrementalAnalyzer.GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); // PERF: Run all analyzers at once using the new GetAnalysisResultAsync API. var analysisResult = await analyzerDriver.GetAnalysisResultAsync(cancellationToken).ConfigureAwait(false); var analyzers = analyzerDriver.Analyzers; var compilation = analyzerDriver.Compilation; var builder = ImmutableDictionary.CreateBuilder <DiagnosticAnalyzer, AnalysisResult>(); foreach (var analyzer in analyzers) { var result = new Builder(project, version); foreach (var tree in compilation.SyntaxTrees) { ImmutableDictionary <DiagnosticAnalyzer, ImmutableArray <Diagnostic> > syntaxDiagnosticsByAnalyzer; ImmutableArray <Diagnostic> syntaxDiagnostics; if (analysisResult.SyntaxDiagnostics.TryGetValue(tree, out syntaxDiagnosticsByAnalyzer) && syntaxDiagnosticsByAnalyzer.TryGetValue(analyzer, out syntaxDiagnostics)) { Contract.Requires(syntaxDiagnostics.Length == CompilationWithAnalyzers.GetEffectiveDiagnostics(syntaxDiagnostics, analyzerDriver.Compilation).Count()); result.AddSyntaxDiagnostics(tree, syntaxDiagnostics); } ImmutableDictionary <DiagnosticAnalyzer, ImmutableArray <Diagnostic> > semanticDiagnosticsByAnalyzer; ImmutableArray <Diagnostic> semanticDiagnostics; if (analysisResult.SemanticDiagnostics.TryGetValue(tree, out semanticDiagnosticsByAnalyzer) && semanticDiagnosticsByAnalyzer.TryGetValue(analyzer, out semanticDiagnostics)) { Contract.Requires(semanticDiagnostics.Length == CompilationWithAnalyzers.GetEffectiveDiagnostics(semanticDiagnostics, analyzerDriver.Compilation).Count()); result.AddSemanticDiagnostics(tree, semanticDiagnostics); } } ImmutableArray <Diagnostic> compilationDiagnostics; if (analysisResult.CompilationDiagnostics.TryGetValue(analyzer, out compilationDiagnostics)) { Contract.Requires(compilationDiagnostics.Length == CompilationWithAnalyzers.GetEffectiveDiagnostics(compilationDiagnostics, analyzerDriver.Compilation).Count()); result.AddCompilationDiagnostics(compilationDiagnostics); } builder.Add(analyzer, result.ToResult()); } return(builder.ToImmutable()); }
public DiagnosticGetter( DiagnosticIncrementalAnalyzer owner, Solution solution, ProjectId?projectId, DocumentId?documentId, bool includeSuppressedDiagnostics) { Owner = owner; Solution = solution; DocumentId = documentId; ProjectId = projectId ?? documentId?.ProjectId; IncludeSuppressedDiagnostics = includeSuppressedDiagnostics; }
// Local functions static bool ShouldIncludeAnalyzer( DiagnosticAnalyzer analyzer, Func <string, bool>?shouldIncludeDiagnostic, DiagnosticIncrementalAnalyzer owner) { // Special case DocumentDiagnosticAnalyzer to never skip these document analyzers // based on 'shouldIncludeDiagnostic' predicate. More specifically, TS has special document // analyzer which report 0 supported diagnostics, but we always want to execute it. if (analyzer is DocumentDiagnosticAnalyzer) { return(true); } // Skip analyzer if none of its reported diagnostics should be included. if (shouldIncludeDiagnostic != null && !owner.DiagnosticAnalyzerInfoCache.GetDiagnosticDescriptors(analyzer).Any(static (a, shouldIncludeDiagnostic) => shouldIncludeDiagnostic(a.Id), shouldIncludeDiagnostic))
public async Task <DiagnosticAnalysisResultMap <DiagnosticAnalyzer, DiagnosticAnalysisResult> > AnalyzeAsync(CompilationWithAnalyzers analyzerDriver, Project project, CancellationToken cancellationToken) { if (analyzerDriver.Analyzers.Length == 0) { // quick bail out return(DiagnosticAnalysisResultMap.Create(ImmutableDictionary <DiagnosticAnalyzer, DiagnosticAnalysisResult> .Empty, ImmutableDictionary <DiagnosticAnalyzer, AnalyzerTelemetryInfo> .Empty)); } var version = await DiagnosticIncrementalAnalyzer.GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); // PERF: Run all analyzers at once using the new GetAnalysisResultAsync API. var analysisResult = await analyzerDriver.GetAnalysisResultAsync(cancellationToken).ConfigureAwait(false); // get compiler result builder map var builderMap = analysisResult.ToResultBuilderMap(project, version, analyzerDriver.Compilation, analyzerDriver.Analyzers, cancellationToken); return(DiagnosticAnalysisResultMap.Create(builderMap.ToImmutableDictionary(kv => kv.Key, kv => new DiagnosticAnalysisResult(kv.Value)), analysisResult.AnalyzerTelemetryInfo)); }
public static async Task <LatestDiagnosticsForSpanGetter> CreateAsync( DiagnosticIncrementalAnalyzer owner, Document document, TextSpan?range, bool blockForData, Func <string, IDisposable?>?addOperationScope, bool includeSuppressedDiagnostics, CodeActionRequestPriority priority, Func <string, bool>?shouldIncludeDiagnostic, CancellationToken cancellationToken) { var stateSets = owner._stateManager .GetOrCreateStateSets(document.Project).Where(s => !owner.DiagnosticAnalyzerInfoCache.IsAnalyzerSuppressed(s.Analyzer, document.Project)); var compilationWithAnalyzers = await GetOrCreateCompilationWithAnalyzersAsync(document.Project, stateSets, includeSuppressedDiagnostics, cancellationToken).ConfigureAwait(false); return(new LatestDiagnosticsForSpanGetter( owner, compilationWithAnalyzers, document, stateSets, shouldIncludeDiagnostic, range, blockForData, addOperationScope, includeSuppressedDiagnostics, priority)); }
private LatestDiagnosticsForSpanGetter( DiagnosticIncrementalAnalyzer owner, CompilationWithAnalyzers analyzerDriverOpt, Document document, IEnumerable <StateSet> stateSets, TextSpan range, bool blockForData, bool includeSuppressedDiagnostics) { _owner = owner; _project = document.Project; _document = document; _stateSets = stateSets; _analyzerDriverOpt = analyzerDriverOpt; _compilerAnalyzer = _owner.HostAnalyzerManager.GetCompilerDiagnosticAnalyzer(_document.Project.Language); _range = range; _blockForData = blockForData; _includeSuppressedDiagnostics = includeSuppressedDiagnostics; }
public static async Task <LatestDiagnosticsForSpanGetter> CreateAsync( DiagnosticIncrementalAnalyzer owner, Document document, TextSpan?range, bool blockForData, Func <string, IDisposable?>?addOperationScope, bool includeSuppressedDiagnostics, CodeActionRequestPriority priority, Func <string, bool>?shouldIncludeDiagnostic, CancellationToken cancellationToken) { var stateSets = owner._stateManager .GetOrCreateStateSets(document.Project).Where(s => DocumentAnalysisExecutor.IsAnalyzerEnabledForProject(s.Analyzer, document.Project, owner.GlobalOptions)); var crashOnAnalyzerException = owner.GlobalOptions.GetOption(InternalDiagnosticsOptions.CrashOnAnalyzerException); var compilationWithAnalyzers = await GetOrCreateCompilationWithAnalyzersAsync(document.Project, stateSets, includeSuppressedDiagnostics, crashOnAnalyzerException, cancellationToken).ConfigureAwait(false); return(new LatestDiagnosticsForSpanGetter( owner, compilationWithAnalyzers, document, stateSets, shouldIncludeDiagnostic, range, blockForData, addOperationScope, includeSuppressedDiagnostics, priority)); }
private LatestDiagnosticsForSpanGetter( DiagnosticIncrementalAnalyzer owner, CompilationWithAnalyzers?compilationWithAnalyzers, Document document, IEnumerable <StateSet> stateSets, string?diagnosticId, TextSpan range, bool blockForData, Func <string, IDisposable?>?addOperationScope, bool includeSuppressedDiagnostics) { _owner = owner; _compilationWithAnalyzers = compilationWithAnalyzers; _document = document; _stateSets = stateSets; _diagnosticId = diagnosticId; _range = range; _blockForData = blockForData; _addOperationScope = addOperationScope; _includeSuppressedDiagnostics = includeSuppressedDiagnostics; }
private LatestDiagnosticsForSpanGetter( DiagnosticIncrementalAnalyzer owner, CompilationWithAnalyzers?compilation, Document document, IEnumerable <StateSet> stateSets, string?diagnosticId, TextSpan range, bool blockForData, bool includeSuppressedDiagnostics) { _owner = owner; _project = document.Project; _document = document; _stateSets = stateSets; _diagnosticId = diagnosticId; _compilation = compilation; _range = range; _blockForData = blockForData; _includeSuppressedDiagnostics = includeSuppressedDiagnostics; }
public static async Task <LatestDiagnosticsForSpanGetter> CreateAsync( DiagnosticIncrementalAnalyzer owner, Document document, TextSpan range, bool blockForData, bool includeSuppressedDiagnostics = false, string?diagnosticId = null, CancellationToken cancellationToken = default) { var stateSets = owner._stateManager .GetOrCreateStateSets(document.Project).Where(s => !owner.AnalyzerService.IsAnalyzerSuppressed(s.Analyzer, document.Project)); // filter to specific diagnostic it is looking for if (diagnosticId != null) { stateSets = stateSets.Where(s => owner.AnalyzerService.GetDiagnosticDescriptors(s.Analyzer).Any(d => d.Id == diagnosticId)).ToList(); } var compilation = await owner.CreateCompilationWithAnalyzersAsync(document.Project, stateSets, includeSuppressedDiagnostics, cancellationToken).ConfigureAwait(false); return(new LatestDiagnosticsForSpanGetter(owner, compilation, document, stateSets, diagnosticId, range, blockForData, includeSuppressedDiagnostics)); }
private async Task <DiagnosticAnalysisResultMap <DiagnosticAnalyzer, DiagnosticAnalysisResult> > AnalyzeInProcAsync( CompilationWithAnalyzers analyzerDriver, Project project, RemoteHostClient client, CancellationToken cancellationToken) { if (analyzerDriver == null || analyzerDriver.Analyzers.Length == 0) { // quick bail out return(DiagnosticAnalysisResultMap.Create(ImmutableDictionary <DiagnosticAnalyzer, DiagnosticAnalysisResult> .Empty, ImmutableDictionary <DiagnosticAnalyzer, AnalyzerTelemetryInfo> .Empty)); } var version = await DiagnosticIncrementalAnalyzer.GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); // PERF: Run all analyzers at once using the new GetAnalysisResultAsync API. var analysisResult = await analyzerDriver.GetAnalysisResultAsync(cancellationToken).ConfigureAwait(false); // if remote host is there, report performance data var asyncToken = _owner?.Listener.BeginAsyncOperation(nameof(AnalyzeInProcAsync)); var _ = FireAndForgetReportAnalyzerPerformanceAsync(project, client, analysisResult, cancellationToken).CompletesAsyncOperation(asyncToken); // get compiler result builder map var builderMap = analysisResult.ToResultBuilderMap(project, version, analyzerDriver.Compilation, analyzerDriver.Analyzers, cancellationToken); return(DiagnosticAnalysisResultMap.Create(builderMap.ToImmutableDictionary(kv => kv.Key, kv => DiagnosticAnalysisResult.CreateFromBuilder(kv.Value)), analysisResult.AnalyzerTelemetryInfo)); }
public IDELatestDiagnosticGetter(DiagnosticIncrementalAnalyzer owner, ImmutableHashSet<string> diagnosticIds, Solution solution, ProjectId projectId, DocumentId documentId, bool includeSuppressedDiagnostics) : base(owner, solution, projectId, documentId, id: null, includeSuppressedDiagnostics: includeSuppressedDiagnostics) { _diagnosticIds = diagnosticIds; }
public IDELatestDiagnosticGetter(DiagnosticIncrementalAnalyzer owner, Solution solution, object id, bool includeSuppressedDiagnostics) : base(owner, solution, projectId: null, documentId: null, id: id, includeSuppressedDiagnostics: includeSuppressedDiagnostics) { _diagnosticIds = null; }
public IDELatestDiagnosticGetter(DiagnosticIncrementalAnalyzer owner, ImmutableHashSet <string> diagnosticIds, Solution solution, ProjectId projectId, bool includeSuppressedDiagnostics) : this(owner, diagnosticIds, solution, projectId, documentId : null, includeSuppressedDiagnostics : includeSuppressedDiagnostics) { }
public IDELatestDiagnosticGetter(DiagnosticIncrementalAnalyzer owner, Solution solution, ProjectId projectId, DocumentId documentId, bool includeSuppressedDiagnostics) : base(owner, solution, projectId, documentId, id: null, includeSuppressedDiagnostics: includeSuppressedDiagnostics) { _diagnosticIds = null; }
public IDECachedDiagnosticGetter(DiagnosticIncrementalAnalyzer owner, Solution solution, object id, bool includeSuppressedDiagnostics) : base(owner, solution, projectId: null, documentId: null, id: id, includeSuppressedDiagnostics: includeSuppressedDiagnostics) { }
public IDECachedDiagnosticGetter(DiagnosticIncrementalAnalyzer owner, Solution solution, ProjectId projectId, DocumentId documentId, bool includeSuppressedDiagnostics) : base(owner, solution, projectId, documentId, id: null, includeSuppressedDiagnostics: includeSuppressedDiagnostics) { }
public Executor(DiagnosticIncrementalAnalyzer owner) { _owner = owner; }
public CompilationManager(DiagnosticIncrementalAnalyzer owner) { _owner = owner; _map = new ConditionalWeakTable <Project, CompilationWithAnalyzers>(); }
public CompilationManager(DiagnosticIncrementalAnalyzer owner) { _owner = owner; _map = new ConditionalWeakTable<Project, CompilationWithAnalyzers>(); }
public Executor(DiagnosticIncrementalAnalyzer owner) { _owner = owner; _diagnosticAnalyzerRunner = new InProcOrRemoteHostAnalyzerRunner(_owner.Owner, _owner.HostDiagnosticUpdateSource); }