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));
        }
예제 #2
0
        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()));
        }