in src/Analysis/Codelyzer.Analysis.Build/ProjectBuildHandler.cs [348:391]
public async Task<ProjectBuildResult> Build()
{
await SetCompilation();
ProjectBuildResult projectBuildResult = new ProjectBuildResult
{
BuildErrors = Errors,
ProjectPath = _projectPath,
ProjectRootPath = Path.GetDirectoryName(_projectPath),
Project = Project,
Compilation = Compilation,
PrePortCompilation = PrePortCompilation,
IsSyntaxAnalysis = isSyntaxAnalysis,
PreportReferences = PrePortMetaReferences,
MissingReferences = MissingMetaReferences
};
GetTargetFrameworks(projectBuildResult, AnalyzerResult);
projectBuildResult.ProjectGuid = ProjectAnalyzer.ProjectGuid.ToString();
projectBuildResult.ProjectType = ProjectAnalyzer.ProjectInSolution != null ? ProjectAnalyzer.ProjectInSolution.ProjectType.ToString() : string.Empty;
foreach (var syntaxTree in Compilation.SyntaxTrees)
{
var sourceFilePath = Path.GetRelativePath(projectBuildResult.ProjectRootPath, syntaxTree.FilePath);
var preportTree = PrePortCompilation?.SyntaxTrees?.FirstOrDefault(s => s.FilePath == syntaxTree.FilePath);
var fileResult = new SourceFileBuildResult
{
SyntaxTree = syntaxTree,
PrePortSemanticModel = preportTree != null ? PrePortCompilation?.GetSemanticModel(preportTree) : null,
SemanticModel = Compilation.GetSemanticModel(syntaxTree),
SourceFileFullPath = syntaxTree.FilePath,
SyntaxGenerator = SyntaxGenerator.GetGenerator(Project),
SourceFilePath = sourceFilePath
};
projectBuildResult.SourceFileBuildResults.Add(fileResult);
projectBuildResult.SourceFiles.Add(sourceFilePath);
}
if (_analyzerConfiguration != null && _analyzerConfiguration.MetaDataSettings.ReferenceData)
{
projectBuildResult.ExternalReferences = GetExternalReferences(projectBuildResult?.Compilation, projectBuildResult?.Project, projectBuildResult?.Compilation?.References);
}
return projectBuildResult;
}