Skip to content

Commit

Permalink
Merge pull request #64330 from CyrusNajmabadi/diabledUnusedFunctionality
Browse files Browse the repository at this point in the history
Remove portions of SolutionCrawler not used by UnitTesting team.
  • Loading branch information
CyrusNajmabadi committed Sep 28, 2022
2 parents 14d201d + 6dc2ec5 commit 6e189ab
Show file tree
Hide file tree
Showing 14 changed files with 182 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public Task AnalyzeDocumentAsync(Document document, SyntaxNode bodyOpt, UnitTest
public Task AnalyzeProjectAsync(Project project, bool semanticsChanged, UnitTestingInvocationReasons reasons, CancellationToken cancellationToken)
=> _implementation.AnalyzeProjectAsync(project, semanticsChanged, reasons, cancellationToken);

#if false // Not used in unit testing crawling
public Task AnalyzeSyntaxAsync(Document document, UnitTestingInvocationReasons reasons, CancellationToken cancellationToken)
=> Task.CompletedTask;

Expand All @@ -42,13 +43,15 @@ public Task ActiveDocumentSwitchedAsync(TextDocument document, CancellationToken

public Task NewSolutionSnapshotAsync(Solution solution, CancellationToken cancellationToken)
=> Task.CompletedTask;
#endif

public Task RemoveDocumentAsync(DocumentId documentId, CancellationToken cancellationToken)
{
_implementation.RemoveDocument(documentId);
return Task.CompletedTask;
}

#if false // Not used in unit testing crawling
public Task RemoveProjectAsync(ProjectId projectId, CancellationToken cancellationToken)
=> Task.CompletedTask;

Expand All @@ -73,16 +76,13 @@ public void LogAnalyzerCountSummary()
/// </summary>
public int Priority => 1;

#if false

// Unit testing incremental analyzer only supports full solution analysis scope.
// In future, we should add a separate option to allow users to configure background analysis scope for unit testing.
public static BackgroundAnalysisScope GetBackgroundAnalysisScope(OptionSet _) => BackgroundAnalysisScope.FullSolution;

#endif
// Unit testing incremental analyzer only supports full solution analysis scope.
// In future, we should add a separate option to allow users to configure background analysis scope for unit testing.
public static BackgroundAnalysisScope GetBackgroundAnalysisScope(OptionSet _) => BackgroundAnalysisScope.FullSolution;

public void Shutdown()
{
}
#endif
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ public void Reanalyze()

var metadata = new UnitTestingIncrementalAnalyzerProviderMetadata(
analyzerName,
#if false // Not used in unit testing crawling
highPriorityForActiveFile: false,
#endif
new[] { workspaceKind });

solutionCrawlerRegistrationService.AddAnalyzerProvider(analyzerProvider, metadata);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.UnitTesting.SolutionCrawler
[AttributeUsage(AttributeTargets.Class)]
internal class ExportUnitTestingIncrementalAnalyzerProviderAttribute : ExportAttribute
{
#if false // Not used in unit testing crawling
public bool HighPriorityForActiveFile { get; }
#endif
public string Name { get; }
public string[] WorkspaceKinds { get; }

Expand All @@ -22,13 +24,17 @@ public ExportUnitTestingIncrementalAnalyzerProviderAttribute(string name, string
{
this.WorkspaceKinds = workspaceKinds;
this.Name = name ?? throw new ArgumentNullException(nameof(name));
#if false // Not used in unit testing crawling
this.HighPriorityForActiveFile = false;
#endif
}

#if false // Not used in unit testing crawling
public ExportUnitTestingIncrementalAnalyzerProviderAttribute(bool highPriorityForActiveFile, string name, string[] workspaceKinds)
: this(name, workspaceKinds)
{
this.HighPriorityForActiveFile = highPriorityForActiveFile;
}
#endif
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.UnitTesting.SolutionCrawler
{
internal interface IUnitTestingIncrementalAnalyzer
{
#if false // Not used in unit testing crawling
Task NewSolutionSnapshotAsync(Solution solution, CancellationToken cancellationToken);

Task DocumentOpenAsync(Document document, CancellationToken cancellationToken);
Task DocumentCloseAsync(Document document, CancellationToken cancellationToken);

Task ActiveDocumentSwitchedAsync(TextDocument document, CancellationToken cancellationToken);

/// <summary>
Expand All @@ -23,10 +25,14 @@ internal interface IUnitTestingIncrementalAnalyzer
Task DocumentResetAsync(Document document, CancellationToken cancellationToken);

Task AnalyzeSyntaxAsync(Document document, UnitTestingInvocationReasons reasons, CancellationToken cancellationToken);
#endif

Task AnalyzeDocumentAsync(Document document, SyntaxNode bodyOpt, UnitTestingInvocationReasons reasons, CancellationToken cancellationToken);
Task AnalyzeProjectAsync(Project project, bool semanticsChanged, UnitTestingInvocationReasons reasons, CancellationToken cancellationToken);

Task RemoveDocumentAsync(DocumentId documentId, CancellationToken cancellationToken);

#if false // Not used in unit testing crawling
Task RemoveProjectAsync(ProjectId projectId, CancellationToken cancellationToken);

Task NonSourceDocumentOpenAsync(TextDocument textDocument, CancellationToken cancellationToken);
Expand All @@ -42,5 +48,6 @@ internal interface IUnitTestingIncrementalAnalyzer
void LogAnalyzerCountSummary();
int Priority { get; }
void Shutdown();
#endif
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Options;

namespace Microsoft.CodeAnalysis.ExternalAccess.UnitTesting.SolutionCrawler
{
Expand All @@ -14,6 +13,8 @@ protected UnitTestingIncrementalAnalyzerBase()
{
}

#if false // Not used in unit testing crawling

public virtual Task NewSolutionSnapshotAsync(Solution solution, CancellationToken cancellationToken)
=> Task.CompletedTask;

Expand All @@ -32,6 +33,8 @@ public Task ActiveDocumentSwitchedAsync(TextDocument document, CancellationToken
public virtual Task AnalyzeSyntaxAsync(Document document, UnitTestingInvocationReasons reasons, CancellationToken cancellationToken)
=> Task.CompletedTask;

#endif

public virtual Task AnalyzeDocumentAsync(Document document, SyntaxNode bodyOpt, UnitTestingInvocationReasons reasons, CancellationToken cancellationToken)
=> Task.CompletedTask;

Expand All @@ -41,6 +44,8 @@ public virtual Task AnalyzeProjectAsync(Project project, bool semanticsChanged,
public virtual Task RemoveDocumentAsync(DocumentId documentId, CancellationToken cancellationToken)
=> Task.CompletedTask;

#if false // Not used in unit testing crawling

public virtual Task RemoveProjectAsync(ProjectId projectId, CancellationToken cancellation)
=> Task.CompletedTask;

Expand Down Expand Up @@ -68,5 +73,7 @@ public void LogAnalyzerCountSummary()
public virtual void Shutdown()
{
}

#endif
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,36 +12,51 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.UnitTesting.SolutionCrawler
{
internal class UnitTestingIncrementalAnalyzerProviderMetadata : WorkspaceKindMetadata
{
#if false // Not used in unit testing crawling
public bool HighPriorityForActiveFile { get; }
#endif
public string Name { get; }

public UnitTestingIncrementalAnalyzerProviderMetadata(IDictionary<string, object> data)
: base(data)
{
#if false // Not used in unit testing crawling
this.HighPriorityForActiveFile = (bool)data.GetValueOrDefault("HighPriorityForActiveFile");
#endif
this.Name = (string)data.GetValueOrDefault("Name");
}

public UnitTestingIncrementalAnalyzerProviderMetadata(string name, bool highPriorityForActiveFile, params string[] workspaceKinds)
public UnitTestingIncrementalAnalyzerProviderMetadata(
string name,
#if false // Not used in unit testing crawling
bool highPriorityForActiveFile,
#endif
params string[] workspaceKinds)
: base(workspaceKinds)
{
#if false // Not used in unit testing crawling
this.HighPriorityForActiveFile = highPriorityForActiveFile;
#endif
this.Name = name;
}

public override bool Equals(object obj)
{
return obj is UnitTestingIncrementalAnalyzerProviderMetadata metadata
&& base.Equals(obj)
#if false // Not used in unit testing crawling
&& HighPriorityForActiveFile == metadata.HighPriorityForActiveFile
#endif
&& Name == metadata.Name;
}

public override int GetHashCode()
{
var hashCode = 1997033996;
hashCode = hashCode * -1521134295 + base.GetHashCode();
#if false // Not used in unit testing crawling
hashCode = hashCode * -1521134295 + HighPriorityForActiveFile.GetHashCode();
#endif
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Name);
return hashCode;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,12 @@ public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId,
}
}));

#if false // Not used in unit testing crawling
foreach (var analyzer in analyzers)
{
analyzer.LogAnalyzerCountSummary();
}
#endif
}

private static int GetSolutionHash(Solution solution)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ public IUnitTestingWorkCoordinator Register(Solution solution)
coordinator = new UnitTestingWorkCoordinator(
_listener,
GetAnalyzerProviders(workspaceKind),
#if false // Not used in unit testing crawling
initializeLazily: true,
#endif
new UnitTestingRegistration(this, correlationId, workspaceKind, solutionServices, _progressReporter));

_documentWorkCoordinatorMap.Add((workspaceKind, solutionServices), coordinator);
Expand Down Expand Up @@ -130,7 +132,11 @@ public void AddAnalyzerProvider(IUnitTestingIncrementalAnalyzerProvider provider
var analyzer = lazyProvider.Value.CreateIncrementalAnalyzer();
if (analyzer != null)
{
coordinator.AddAnalyzer(analyzer, metadata.HighPriorityForActiveFile);
coordinator.AddAnalyzer(analyzer
#if false // Not used in unit testing crawling
, metadata.HighPriorityForActiveFile
#endif
);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,12 @@ public override void Shutdown()

Processor._documentTracker.NonRoslynBufferTextChanged -= OnNonRoslynBufferTextChanged;

#if false // Not used in unit testing crawling
foreach (var analyzer in Analyzers)
{
analyzer.Shutdown();
}
#endif
}

private void OnNonRoslynBufferTextChanged(object? sender, EventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ internal sealed partial class UnitTestingWorkCoordinator
{
private sealed partial class UnitTestingIncrementalAnalyzerProcessor
{
#if false // Not used in unit testing crawling
private sealed class UnitTestingHighPriorityProcessor : UnitTestingIdleProcessor
{
private readonly UnitTestingIncrementalAnalyzerProcessor _processor;
Expand Down Expand Up @@ -234,6 +235,7 @@ private async Task ProcessDocumentAsync(Solution solution, ImmutableArray<IUnitT
public void Shutdown()
=> _workItemQueue.Dispose();
}
#endif
}
}
}
Expand Down
Loading

0 comments on commit 6e189ab

Please sign in to comment.