예제 #1
0
 private CompilationWithAnalyzers GetCompilationWithAnalyzers(Compilation compilation)
 {
     Contract.ThrowIfFalse(_project.SupportsCompilation);
     return(_owner.HostAnalyzerManager.GetOrCreateCompilationWithAnalyzers(_project, p =>
     {
         var analyzers = _owner
                         .GetAnalyzers(p)
                         .Where(a => !CompilationWithAnalyzers.IsDiagnosticAnalyzerSuppressed(a, compilation.Options, _analysisOptions.OnAnalyzerException))
                         .ToImmutableArray()
                         .Distinct();
         return new CompilationWithAnalyzers(compilation, analyzers, _analysisOptions);
     }));
 }
예제 #2
0
        private CompilationWithAnalyzers GetCompilationWithAnalyzers(Compilation compilation)
        {
            Contract.ThrowIfFalse(_project.SupportsCompilation);

            if (_lazyCompilationWithAnalyzers == null)
            {
                var analyzers = _owner
                                .GetAnalyzers(_project)
                                .Where(a => !CompilationWithAnalyzers.IsDiagnosticAnalyzerSuppressed(a, compilation.Options, _analysisOptions.OnAnalyzerException))
                                .ToImmutableArray()
                                .Distinct();
                Interlocked.CompareExchange(ref _lazyCompilationWithAnalyzers, new CompilationWithAnalyzers(compilation, analyzers, _analysisOptions), null);
            }

            return(_lazyCompilationWithAnalyzers);
        }