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>();
}