Search in sources :

Example 1 with StatementVisitor

use of org.sonar.java.ast.visitors.StatementVisitor in project sonar-java by SonarSource.

the class Measurer method scanFile.

@Override
public void scanFile(JavaFileScannerContext context) {
    sonarFile = fs.inputFile(fs.predicates().is(context.getFile()));
    CommentLinesVisitor commentLinesVisitor = createCommentLineVisitorAndFindNoSonar(context);
    if (isSonarLintContext()) {
        // No need to compute metrics on SonarLint side, but the no sonar filter is still required
        return;
    }
    classTrees.clear();
    methods = 0;
    complexityInMethods = 0;
    classes = 0;
    methodComplexityDistribution = new RangeDistributionBuilder(LIMITS_COMPLEXITY_METHODS);
    super.scanFile(context);
    // leave file.
    int fileComplexity = context.getComplexityNodes(context.getTree()).size();
    saveMetricOnFile(CoreMetrics.CLASSES, classes);
    saveMetricOnFile(CoreMetrics.FUNCTIONS, methods);
    saveMetricOnFile(CoreMetrics.COMPLEXITY_IN_FUNCTIONS, complexityInMethods);
    saveMetricOnFile(CoreMetrics.COMPLEXITY_IN_CLASSES, fileComplexity);
    saveMetricOnFile(CoreMetrics.COMPLEXITY, fileComplexity);
    saveMetricOnFile(CoreMetrics.COMMENT_LINES, commentLinesVisitor.commentLinesMetric());
    saveMetricOnFile(CoreMetrics.STATEMENTS, new StatementVisitor().numberOfStatements(context.getTree()));
    saveMetricOnFile(CoreMetrics.NCLOC, new LinesOfCodeVisitor().linesOfCode(context.getTree()));
    saveMetricOnFile(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION, methodComplexityDistribution.build());
    RangeDistributionBuilder fileComplexityDistribution = new RangeDistributionBuilder(LIMITS_COMPLEXITY_FILES);
    saveMetricOnFile(CoreMetrics.FILE_COMPLEXITY_DISTRIBUTION, fileComplexityDistribution.add(fileComplexity).build());
    saveMetricOnFile(CoreMetrics.COGNITIVE_COMPLEXITY, CognitiveComplexityVisitor.compilationUnitComplexity(context.getTree()));
}
Also used : CommentLinesVisitor(org.sonar.java.ast.visitors.CommentLinesVisitor) StatementVisitor(org.sonar.java.ast.visitors.StatementVisitor) LinesOfCodeVisitor(org.sonar.java.ast.visitors.LinesOfCodeVisitor) RangeDistributionBuilder(org.sonar.api.ce.measure.RangeDistributionBuilder)

Aggregations

RangeDistributionBuilder (org.sonar.api.ce.measure.RangeDistributionBuilder)1 CommentLinesVisitor (org.sonar.java.ast.visitors.CommentLinesVisitor)1 LinesOfCodeVisitor (org.sonar.java.ast.visitors.LinesOfCodeVisitor)1 StatementVisitor (org.sonar.java.ast.visitors.StatementVisitor)1