public static UnitTestingIncrementalAnalyzerProvider?TryRegister(
            Workspace workspace,
            string analyzerName,
            IUnitTestingIncrementalAnalyzerProviderImplementation provider
            )
        {
            var solutionCrawlerRegistrationService =
                workspace.Services.GetService <ISolutionCrawlerRegistrationService>();

            if (solutionCrawlerRegistrationService == null)
            {
                return(null);
            }

            var analyzerProvider = new UnitTestingIncrementalAnalyzerProvider(workspace, provider);

            var metadata = new IncrementalAnalyzerProviderMetadata(
                analyzerName,
                highPriorityForActiveFile: false,
                new[] { workspace.Kind }
                );

            solutionCrawlerRegistrationService.AddAnalyzerProvider(analyzerProvider, metadata);
            return(analyzerProvider);
        }
 internal UnitTestingIncrementalAnalyzerProvider(
     Workspace workspace,
     IUnitTestingIncrementalAnalyzerProviderImplementation incrementalAnalyzerProvider
     )
 {
     _workspace = workspace;
     _incrementalAnalyzerProvider = incrementalAnalyzerProvider;
 }
 public static UnitTestingIncrementalAnalyzerProvider?TryRegisterAnalyzerProvider(
     string analyzerName,
     IUnitTestingIncrementalAnalyzerProviderImplementation provider
     ) =>
 UnitTestingIncrementalAnalyzerProvider.TryRegister(
     RemoteWorkspaceManager.Default.GetWorkspace(),
     analyzerName,
     provider
     );
示例#4
0
 public UnitTestingIncrementalAnalyzerProvider?TryRegisterAnalyzerProvider(
     string analyzerName,
     IUnitTestingIncrementalAnalyzerProviderImplementation provider
     ) =>
 UnitTestingIncrementalAnalyzerProvider.TryRegister(
     GetWorkspace(),
     analyzerName,
     provider
     );
示例#5
0
        public void AddAnalyzerProvider(IUnitTestingIncrementalAnalyzerProviderImplementation provider, UnitTestingIncrementalAnalyzerProviderMetadataWrapper metadata)
        {
            if (_analyzerProvider != null)
            {
                // NOTE: We expect the analyzer to be a singleton, therefore this method should be called just once.
                throw new InvalidOperationException();
            }

            _analyzerProvider = new UnitTestingIncrementalAnalyzerProvider(provider);
            _registrationService.AddAnalyzerProvider(_analyzerProvider, metadata.UnderlyingObject);
        }
示例#6
0
        public static async ValueTask <UnitTestingIncrementalAnalyzerProvider?> TryRegisterAnalyzerProviderAsync(
            ServiceBrokerClient client,
            string analyzerName,
            IUnitTestingIncrementalAnalyzerProviderImplementation provider,
            CancellationToken cancellationToken)
        {
            using var rental = await client.GetProxyAsync <IRemoteWorkspaceSolutionProviderService>(RemoteWorkspaceSolutionProviderService.ServiceDescriptor, cancellationToken).ConfigureAwait(false);

            Contract.ThrowIfNull(rental.Proxy);
            var workspace = await rental.Proxy.GetWorkspaceAsync(WorkspaceKind.RemoteWorkspace, cancellationToken).ConfigureAwait(false);

            return(UnitTestingIncrementalAnalyzerProvider.TryRegister(workspace, analyzerName, provider));
        }
示例#7
0
 public UnitTestingIncrementalAnalyzerProvider(IUnitTestingIncrementalAnalyzerProviderImplementation incrementalAnalyzerProvider)
 => _incrementalAnalyzerProvider = incrementalAnalyzerProvider;