public static int complexity(Tree tree) { return complexityTrees(tree).size(); }
public static List<Tree> complexityTrees(Tree tree) { ComplexityVisitor visitor = new ComplexityVisitor(); tree.accept(visitor); return visitor.complexityTrees; }
@Override public void visitFunctionDeclaration(FunctionDeclarationTree tree) { if (tree.equals(root)) { super.visitFunctionDeclaration(tree); } }
@Override public void visitForStatement(ForStatementTree tree) { incrementComplexity(tree.forToken()); super.visitForStatement(tree); }
@Override public void visitNode(Tree tree) { List<Tree> complexityTrees = ComplexityVisitor.complexityNodesWithoutNestedFunctions(tree); int complexity = complexityTrees.size(); if (complexity > threshold) { String functionName = CheckUtils.getFunctionName((FunctionTree) tree); String message = String.format(MESSAGE, functionName, complexity, threshold); int cost = complexity - threshold; PreciseIssue issue = context().newIssue(this, ((FunctionTree) tree).functionToken(), message).cost(cost); complexityTrees.forEach(complexityTree -> issue.secondary(complexityTree, "+1")); } }
@Override public void visitNode(Tree tree) { if (tree.is(Kind.COMPILATION_UNIT)) { fileMeasures.setFileComplexity(ComplexityVisitor.complexity(tree)); fileMeasures.setFileCognitiveComplexity(CognitiveComplexityVisitor.complexity((CompilationUnitTree) tree)); } else if (tree.is(CLASS_NODES)) { fileMeasures.addClassComplexity(ComplexityVisitor.complexity(tree)); } else if (tree.is(FUNCTION_NODES)) { fileMeasures.addFunctionComplexity(ComplexityVisitor.complexity(tree)); } }
@Override public void visitFunctionExpression(FunctionExpressionTree tree) { if (tree.equals(root)) { super.visitFunctionExpression(tree); } }
@Override public void visitMethodDeclaration(MethodDeclarationTree tree) { if (tree.equals(root)) { super.visitMethodDeclaration(tree); } }
@Override public void visitFunctionDeclaration(FunctionDeclarationTree tree) { incrementComplexity(tree.functionToken()); super.visitFunctionDeclaration(tree); }
@Override public void visitNode(Tree tree) { List<Tree> complexityTrees = ComplexityVisitor.complexityNodesWithoutNestedFunctions(tree); int complexity = complexityTrees.size(); if (complexity > threshold) { String functionName = CheckUtils.getFunctionName((FunctionTree) tree); String message = String.format(MESSAGE, functionName, complexity, threshold); int cost = complexity - threshold; PreciseIssue issue = context().newIssue(this, ((FunctionTree) tree).functionToken(), message).cost(cost); complexityTrees.forEach(complexityTree -> issue.secondary(complexityTree, "+1")); } }
@Override public void visitNode(Tree tree) { if (tree.is(Kind.COMPILATION_UNIT)) { fileMeasures.setFileComplexity(ComplexityVisitor.complexity(tree)); fileMeasures.setFileCognitiveComplexity(CognitiveComplexityVisitor.complexity((CompilationUnitTree) tree)); } else if (tree.is(CLASS_NODES)) { fileMeasures.addClassComplexity(ComplexityVisitor.complexity(tree)); } else if (tree.is(FUNCTION_NODES)) { fileMeasures.addFunctionComplexity(ComplexityVisitor.complexity(tree)); } }
@Override public void visitFunctionExpression(FunctionExpressionTree tree) { if (tree.equals(root)) { super.visitFunctionExpression(tree); } }
@Override public void visitMethodDeclaration(MethodDeclarationTree tree) { if (tree.equals(root)) { super.visitMethodDeclaration(tree); } }
public static int complexity(Tree tree) { return complexityTrees(tree).size(); }
@Override public void visitFunctionExpression(FunctionExpressionTree tree) { incrementComplexity(tree.functionToken()); super.visitFunctionExpression(tree); }
private int complexityWithoutNestedFunctions(String toParse) { Tree tree = parser.parse(toParse); return ComplexityVisitor.complexityNodesWithoutNestedFunctions(tree).size(); }
private int complexity(String toParse) { Tree tree = parser.parse(toParse); return ComplexityVisitor.complexity(tree); }
@Override public void visitFunctionDeclaration(FunctionDeclarationTree tree) { if (tree.equals(root)) { super.visitFunctionDeclaration(tree); } }
public static List<Tree> complexityTrees(Tree tree) { ComplexityVisitor visitor = new ComplexityVisitor(); tree.accept(visitor); return visitor.complexityTrees; }
@Override public void visitNode(Tree tree) { List<Tree> complexityTrees = ComplexityVisitor.complexityTrees(tree); int complexity = complexityTrees.size(); if (complexity > max) { int cost = complexity - max; PreciseIssue issue = context().newIssue(this, ((ClassTree) tree).classToken(), message(tree, complexity)).cost(cost); complexityTrees.forEach(complexityTree -> issue.secondary(complexityTree, "+1")); } }