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);
}