private static Types GetTypesResult(TypeMetrics metrics) { Types type = new Types(); type.AddRange(MetricsReportBuilder.GetTypeResults(metrics)); return(type); }
private static IEnumerable <VsCodeMetrics.Entities.Type> GetTypeResults(TypeMetrics metrics) { foreach (TypeMetric typeMetric in metrics.Results) { VsCodeMetrics.Entities.Type type = new VsCodeMetrics.Entities.Type(); type.Name = typeMetric.Name; VsCodeMetrics.Entities.Type type1 = type; if (typeMetric.Kind == TypeMetricKind.Class) { type1.Kind = "Class"; } else if (typeMetric.Kind == TypeMetricKind.Interface) { type1.Kind = "Interface"; } else if (typeMetric.Kind == TypeMetricKind.Struct) { type1.Kind = "Struct"; } else if (typeMetric.Kind == TypeMetricKind.ValueType) { type1.Kind = "ValueType"; } else if (typeMetric.Kind == TypeMetricKind.Delegate) { type1.Kind = "Delegate"; } if (typeMetric.Metrics != null) { type1.Add(MetricsReportBuilder.GetMetricsResult(typeMetric.Metrics)); } type1.Add(MetricsReportBuilder.GetMembersResult(typeMetric.MemberMetrics)); yield return(type1); } }
private TypeMetrics CalculateTypeMetrics(Compilation compilation, NamespaceDeclaration namespaceNodes) { List <TypeMetric> typeMetrics = new List <TypeMetric>(); foreach (KeyValuePair <string, TypeDeclaration> typeDeclaration in GetTypeDeclarations(namespaceNodes)) { TypeDeclaration value = typeDeclaration.Value; MemberMetrics memberMetric = CalculateMemberMetrics(compilation, value); typeMetrics.Add(CalculateTypeMetrics(compilation, value, memberMetric)); } TypeMetrics typeMetric = new TypeMetrics() { Results = typeMetrics.ToList <TypeMetric>().AsReadOnly() }; return(typeMetric); }
public NamespaceMetrics Calculate(Project project) { Compilation compilation = project.GetCompilation(); IEnumerable <KeyValuePair <string, NamespaceDeclaration> > namespaceDeclarations = GetNamespaceDeclarations(project, this.IgnoreGeneratedCode); List <NamespaceMetric> namespaceMetrics = new List <NamespaceMetric>(); foreach (KeyValuePair <string, NamespaceDeclaration> namespaceDeclaration in namespaceDeclarations) { TypeMetrics typeMetric = CalculateTypeMetrics(compilation, namespaceDeclaration.Value); NamespaceMetric namespaceMetric = CalculateNamespaceMetrics(compilation, namespaceDeclaration.Value, typeMetric); namespaceMetrics.Add(namespaceMetric); } return(new NamespaceMetrics() { Results = namespaceMetrics.AsReadOnly() }); }
public NamespaceMetric( double maintainabilityIndex, int cyclomaticComplexity, int linesOfCode, IEnumerable <ITypeCoupling> classCouplings, int depthOfInheritance, string name, IEnumerable <ITypeMetric> typeMetrics, IDocumentation documentation) { MaintainabilityIndex = maintainabilityIndex; CyclomaticComplexity = cyclomaticComplexity; LinesOfCode = linesOfCode; ClassCouplings = classCouplings.AsArray(); DepthOfInheritance = depthOfInheritance; Name = name; Documentation = documentation; TypeMetrics = typeMetrics.AsArray(); Abstractness = TypeMetrics.Count(x => x.IsAbstract) / (double)TypeMetrics.Count(); }
public NamespaceMetric CalculateFrom(NamespaceDeclarationSyntaxInfo namespaceNode, TypeMetrics typeMetrics) { NamespaceMetric namespaceMetric = new NamespaceMetric() { Name = namespaceNode.Name, TypeMetrics = typeMetrics }; foreach (MetricCalculator calculator in calculators) { namespaceMetric.AddMetricResult(calculator.Calculate <TypeMetrics, TypeMetric>(typeMetrics)); } return(namespaceMetric); }
private NamespaceMetric CalculateNamespaceMetrics(Compilation compilation, NamespaceDeclaration namespaceNodes, TypeMetrics typeMetrics) { if (!namespaceNodes.SyntaxNodes.Any <NamespaceDeclarationSyntaxInfo>()) { return(null); } NamespaceDeclarationSyntaxInfo namespaceDeclarationSyntaxInfo = namespaceNodes.SyntaxNodes.FirstOrDefault <NamespaceDeclarationSyntaxInfo>(); SemanticModel semanticModel = compilation.GetSemanticModel(namespaceDeclarationSyntaxInfo.Syntax.SyntaxTree); return((new NamespaceMetricsCalculator(semanticModel)).CalculateFrom(namespaceDeclarationSyntaxInfo, typeMetrics)); }