ArchiMetrics.Analysis.Metrics.MemberMetricsCalculator.CalculateMemberMetric C# (CSharp) Method

CalculateMemberMetric() private method

private CalculateMemberMetric ( Microsoft.CodeAnalysis.SyntaxNode syntaxNode ) : Task
syntaxNode Microsoft.CodeAnalysis.SyntaxNode
return Task
		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 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;
			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,
				maintainabilityIndex,
				complexity,
				memberName,
				source.AsArray(),
				numberOfParameters,
				numberOfLocalVariables,
				afferentCoupling,
				documentation);
		}