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)); }
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, solution?.FilePath.GetParentFolder(), _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())); }