private async Task<Tuple<Compilation, IEnumerable<IMemberMetric>>> CalculateMemberMetrics(Compilation compilation, TypeDeclaration typeNodes, Solution solution) { var comp = compilation; var metrics = typeNodes.SyntaxNodes .Select(async info => { var tuple = await VerifyCompilation(comp, info).ConfigureAwait(false); var semanticModel = tuple.Item2; comp = tuple.Item1; var calculator = new MemberMetricsCalculator(semanticModel, solution, _memberDocumentationFactory); return await calculator.Calculate(info).ConfigureAwait(false); }); var results = await Task.WhenAll(metrics).ConfigureAwait(false); return new Tuple<Compilation, IEnumerable<IMemberMetric>>(comp, results.SelectMany(x => x).AsArray()); }
protected override Task<EvaluationResult> EvaluateImpl(SyntaxNode node, SemanticModel semanticModel, Solution solution) { var counter = new MemberMetricsCalculator(semanticModel, solution, null); var methodDeclaration = (MethodDeclarationSyntax)node; var metric = counter.CalculateSlim(methodDeclaration); return metric.MaintainabilityIndex <= Threshold ? Task.FromResult( new EvaluationResult { Snippet = node.ToFullString() }) : Task.FromResult((EvaluationResult)null); }