in src/Analysis/Codelyzer.Analysis.Build/ProjectBuildHandler.cs [123:164]
private async Task SetCompilation()
{
PrePortCompilation = await SetPrePortCompilation();
Compilation = await Project.GetCompilationAsync();
var errors = Compilation.GetDiagnostics()
.Where(diagnostic => diagnostic.Severity == DiagnosticSeverity.Error);
if (errors.Any())
{
Logger.LogError($"Build Errors: {Compilation.AssemblyName}: {errors.Count()} " +
$"compilation errors: \n\t{string.Join("\n\t", errors.Where(e => false).Select(e => e.ToString()))}");
Logger.LogDebug(String.Join("\n", errors));
foreach (var error in errors)
{
Errors.Add(error.ToString());
}
}
else
{
Logger.LogInformation($"Project {Project.Name} compiled with no errors");
}
// Fallback logic: On fatal errors like msbuild is not installed or framework versions not installed
// the build fails and does not give syntax trees.
if (Compilation.SyntaxTrees == null ||
Compilation.SyntaxTrees.Count() == 0)
{
try
{
Logger.LogError(syntaxAnalysisError);
Errors.Add(syntaxAnalysisError);
FallbackCompilation();
isSyntaxAnalysis = true;
}
catch (Exception e)
{
Logger.LogError(e, "Error while running syntax analysis");
}
}
}