in src/Analysis/Codelyzer.Analysis/CSharpCodeAnalyzer.cs [139:177]
private async IAsyncEnumerable<AnalyzerResult> AnalyzeGeneratorAsync(string path)
{
if (!File.Exists(path))
{
throw new FileNotFoundException(path);
}
List<ProjectWorkspace> workspaceResults = new List<ProjectWorkspace>();
WorkspaceBuilder builder = new WorkspaceBuilder(Logger, path, AnalyzerConfiguration);
var projectBuildResultEnumerator = builder.BuildProject().GetAsyncEnumerator();
try
{
while (await projectBuildResultEnumerator.MoveNextAsync().ConfigureAwait(false))
{
var projectBuildResult = projectBuildResultEnumerator.Current;
var workspaceResult = AnalyzeProject(projectBuildResult);
workspaceResult.ProjectGuid = projectBuildResult.ProjectGuid;
workspaceResult.ProjectType = projectBuildResult.ProjectType;
workspaceResults.Add(workspaceResult);
if (AnalyzerConfiguration.MetaDataSettings.LoadBuildData)
{
yield return new AnalyzerResult() { ProjectResult = workspaceResult, ProjectBuildResult = projectBuildResult };
}
else
{
yield return new AnalyzerResult() { ProjectResult = workspaceResult };
}
}
}
finally
{
await projectBuildResultEnumerator.DisposeAsync();
}
}