private static ModelNode CreateProjectNode( IProjectMetric projectMetric, IProjectMetric[] projectMetrics, EvaluationResult[] evaluationResults) { var children = projectMetric.Dependencies.Select( y => { var couplings = projectMetric.NamespaceMetrics.SelectMany(x => x.ClassCouplings) .Where(x => x.Assembly == y.GetFileNameWithoutExtension()) .Select(x => new ModelNode(x.Namespace, NodeKind.Namespace, CodeQuality.Good, 0, 100, 0)) .Cast <IModelNode>() .ToList(); return(new ModelNode( y.GetFileNameWithoutExtension(), NodeKind.Assembly, CodeQuality.Good, 0, 100, 0, couplings)); }) .Concat( projectMetric.NamespaceMetrics.Select( namespaceMetric => CreateNamespaceNode( namespaceMetric, projectMetrics, evaluationResults.Where(r => r.Namespace == namespaceMetric.Name)))) .Merge() .ToList(); return(new ModelNode( projectMetric.Name, NodeKind.Assembly, evaluationResults.Where(x => x.ProjectName == projectMetric.Name).GetQuality(), projectMetric.LinesOfCode, projectMetric.MaintainabilityIndex, projectMetric.CyclomaticComplexity, children)); }
private static ModelNode CreateProjectNode( IProjectMetric projectMetric, IProjectMetric[] projectMetrics, EvaluationResult[] evaluationResults) { var children = projectMetric.Dependencies.Select( y => { var couplings = projectMetric.NamespaceMetrics.SelectMany(x => x.ClassCouplings) .Where(x => x.Assembly == y.GetFileNameWithoutExtension()) .Select(x => new ModelNode(x.Namespace, NodeKind.Namespace, CodeQuality.Good, 0, 100, 0)) .Cast<IModelNode>() .ToList(); return new ModelNode( y.GetFileNameWithoutExtension(), NodeKind.Assembly, CodeQuality.Good, 0, 100, 0, couplings); }) .Concat( projectMetric.NamespaceMetrics.Select( namespaceMetric => CreateNamespaceNode( namespaceMetric, projectMetrics, evaluationResults.Where(r => r.Namespace == namespaceMetric.Name)))) .Merge() .ToList(); return new ModelNode( projectMetric.Name, NodeKind.Assembly, evaluationResults.Where(x => x.ProjectName == projectMetric.Name).GetQuality(), projectMetric.LinesOfCode, projectMetric.MaintainabilityIndex, projectMetric.CyclomaticComplexity, children); }
private static IModelNode CreateNamespaceNode(INamespaceMetric namespaceMetric, IProjectMetric[] projectMetrics, IEnumerable<EvaluationResult> reviews) { var references = namespaceMetric.ClassCouplings.Select(definition => CreateNamespaceReferenceNode(definition, projectMetrics)).AsArray(); var children = namespaceMetric.TypeMetrics.Select( typeMetric => CreateTypeNodes(typeMetric, projectMetrics, reviews.Where(x => x.TypeName == typeMetric.Name))) .Concat(references) .Merge() .ToList(); return new ModelNode( namespaceMetric.Name, NodeKind.Namespace, reviews.Where(x => x.Namespace == namespaceMetric.Name).GetQuality(), namespaceMetric.LinesOfCode, namespaceMetric.MaintainabilityIndex, namespaceMetric.CyclomaticComplexity, children); }