public MemberMetric( string codeFile, AccessModifierKind accessModifier, IHalsteadMetrics halstead, int lineNumber, int linesOfCode, double maintainabilityIndex, int cyclomaticComplexity, string name, IEnumerable<ITypeCoupling> classCouplings, int numberOfParameters, int numberOfLocalVariables, int afferentCoupling, IMemberDocumentation documentation) { _halstead = halstead; CodeFile = codeFile; AccessModifier = accessModifier; LineNumber = lineNumber; LinesOfCode = linesOfCode; MaintainabilityIndex = maintainabilityIndex; CyclomaticComplexity = cyclomaticComplexity; Name = name; ClassCouplings = classCouplings.AsArray(); NumberOfParameters = numberOfParameters; NumberOfLocalVariables = numberOfLocalVariables; AfferentCoupling = afferentCoupling; Documentation = documentation; }
public MemberMetric( string codeFile, AccessModifierKind accessModifier, IHalsteadMetrics halstead, int lineNumber, int linesOfCode, double maintainabilityIndex, int cyclomaticComplexity, string name, IEnumerable <ITypeCoupling> classCouplings, int numberOfParameters, int numberOfLocalVariables, int afferentCoupling, IMemberDocumentation documentation) { _halstead = halstead; CodeFile = codeFile; AccessModifier = accessModifier; LineNumber = lineNumber; LinesOfCode = linesOfCode; MaintainabilityIndex = maintainabilityIndex; CyclomaticComplexity = cyclomaticComplexity; Name = name; ClassCouplings = classCouplings; NumberOfParameters = numberOfParameters; NumberOfLocalVariables = numberOfLocalVariables; AfferentCoupling = afferentCoupling; Documentation = documentation; }
private async Task <IMemberMetric> CalculateMemberMetric(SyntaxNode syntaxNode) { var analyzer = new HalsteadAnalyzer(); var halsteadMetrics = analyzer.Calculate(syntaxNode); var memberName = _nameResolver.TryResolveMemberSignatureString(syntaxNode); var source = CalculateClassCoupling(syntaxNode); var complexity = CalculateCyclomaticComplexity(syntaxNode); var linesOfCode = CalculateLinesOfCode(syntaxNode); var sourceLinesOfCode = CalculateSourceLinesOfCode(syntaxNode); var numberOfParameters = CalculateNumberOfParameters(syntaxNode); var numberOfLocalVariables = CalculateNumberOfLocalVariables(syntaxNode); var maintainabilityIndex = CalculateMaintainablityIndex(complexity, linesOfCode, halsteadMetrics); var afferentCoupling = await CalculateAfferentCoupling(syntaxNode).ConfigureAwait(false); var location = syntaxNode.GetLocation(); var lineNumber = location.GetLineSpan().StartLinePosition.Line; var filePath = location.SourceTree == null ? string.Empty : location.SourceTree.FilePath; filePath = filePath.GetPathRelativeTo(_rootFolder); var accessModifier = GetAccessModifier(syntaxNode); IMemberDocumentation documentation = null; if (syntaxNode.SyntaxTree == Model.SyntaxTree) { var symbol = Model.GetDeclaredSymbol(syntaxNode); documentation = await _documentationFactory.Create(symbol, CancellationToken.None); } return(new MemberMetric(filePath, accessModifier, halsteadMetrics, lineNumber, linesOfCode, sourceLinesOfCode, maintainabilityIndex, complexity, memberName, source.AsArray(), numberOfParameters, numberOfLocalVariables, afferentCoupling, documentation)); }