SonarQube.Plugins.Roslyn.DiagnosticAssemblyScanner.InstantiateDiagnosticsFromAssembly C# (CSharp) Method

InstantiateDiagnosticsFromAssembly() private method

Loads the given assembly and instantiates Roslyn diagnostic objects - i.e. existing types deriving from DiagnosticAnalyzer
private InstantiateDiagnosticsFromAssembly ( string assemblyPath, string language ) : IEnumerable
assemblyPath string
language string
return IEnumerable
        private IEnumerable<DiagnosticAnalyzer> InstantiateDiagnosticsFromAssembly(string assemblyPath, string language)
        {
            Assembly analyzerAssembly = LoadAnalyzerAssembly(assemblyPath);
            IEnumerable<DiagnosticAnalyzer> analyzers = null;

            Debug.Assert(String.Equals(language, LanguageNames.CSharp, StringComparison.Ordinal)
                || String.Equals(language, LanguageNames.VisualBasic, StringComparison.Ordinal));

            if (analyzerAssembly != null)
            {
                try
                {
                    analyzers = InstantiateDiagnosticAnalyzers(analyzerAssembly, language);

                    Debug.Assert(analyzers != null);
                    if (analyzers.Any())
                    {
                        this.logger.LogInfo(UIResources.Scanner_AnalyzersLoadSuccess, analyzers.Count());
                    }
                    else
                    {
                        this.logger.LogInfo(UIResources.Scanner_NoAnalyzers, analyzerAssembly.ToString());
                    }
                }
                catch (Exception ex)
                {
                    this.logger.LogError(UIResources.Scanner_AnalyzerInstantiationFail, analyzerAssembly.FullName, ex.Message);
                }
            }

            return analyzers ?? Enumerable.Empty<DiagnosticAnalyzer>();
        }