private ProjectCompatibilityResult GenerateCompatibilityResults()

in src/PortingAssistant.Client.Analysis/AnalysisHandler.cs [521:563]


        private ProjectCompatibilityResult GenerateCompatibilityResults(List<SourceFileAnalysisResult> sourceFileAnalysisResults, string projectPath, bool isPorted)
        {
            var projectCompatibilityResult = new ProjectCompatibilityResult() { IsPorted = isPorted, ProjectPath = projectPath };

            sourceFileAnalysisResults.ForEach(SourceFileAnalysisResult =>
            {
                SourceFileAnalysisResult.ApiAnalysisResults.ForEach(apiAnalysisResult =>
                {
                    var currentEntity = projectCompatibilityResult.CodeEntityCompatibilityResults.First(r => r.CodeEntityType == apiAnalysisResult.CodeEntityDetails.CodeEntityType);

                    var hasAction = SourceFileAnalysisResult.RecommendedActions.Any(ra => ra.TextSpan.Equals(apiAnalysisResult.CodeEntityDetails.TextSpan));
                    if (hasAction)
                    {
                        currentEntity.Actions++;
                    }
                    var compatibility = apiAnalysisResult.CompatibilityResults?.FirstOrDefault().Value?.Compatibility;
                    if (compatibility == Compatibility.COMPATIBLE)
                    {
                        currentEntity.Compatible++;
                    }
                    else if (compatibility == Compatibility.INCOMPATIBLE)
                    {
                        currentEntity.Incompatible++;
                    }
                    else if (compatibility == Compatibility.UNKNOWN)
                    {
                        currentEntity.Unknown++;

                    }
                    else if (compatibility == Compatibility.DEPRECATED)
                    {
                        currentEntity.Deprecated++;
                    }
                    else
                    {
                        currentEntity.Unknown++;
                    }
                });
            });

            _logger.LogInformation($"{projectCompatibilityResult.ToString()}");
            return projectCompatibilityResult;
        }