private void incrementComplexity(AstNode secondaryLocationNode, int currentNodeComplexity) { if (secondaryLocationConsumer != null) { secondaryLocationConsumer.consume(secondaryLocationNode, secondaryMessage(currentNodeComplexity)); } complexity += currentNodeComplexity; }
private void incrementWithoutNesting(AstNode secondaryLocationNode) { incrementComplexity(secondaryLocationNode, 1); }
public int complexity() { return complexityVisitor.getComplexity(); }
public FileMetrics(PythonVisitorContext context, boolean ignoreHeaderComments) { AstNode rootTree = context.rootTree(); numberOfStatements = rootTree.getDescendants(PythonGrammar.STATEMENT).size(); numberOfClasses = rootTree.getDescendants(PythonGrammar.CLASSDEF).size(); complexityVisitor.scanFile(context); cognitiveComplexityVisitor.scanFile(context); fileLinesVisitor = new FileLinesVisitor(ignoreHeaderComments); fileLinesVisitor.scanFile(context); for (AstNode functionDef : rootTree.getDescendants(PythonGrammar.FUNCDEF)) { functionComplexities.add(ComplexityVisitor.complexity(functionDef)); } }
public static int complexity(AstNode node) { ComplexityVisitor visitor = node.is(PythonGrammar.FUNCDEF) ? new FunctionComplexityVisitor() : new ComplexityVisitor(); visitor.scanNode(node); return visitor.complexity; }
public static int complexity(AstNode node, @Nullable SecondaryLocationConsumer secondaryLocationConsumer) { CognitiveComplexityVisitor visitor = new CognitiveComplexityVisitor(secondaryLocationConsumer); visitor.scanNode(node); return visitor.complexity; }
public int cognitiveComplexity() { return cognitiveComplexityVisitor.getComplexity(); }
@Override public void visitNode(AstNode node) { if (node.is(PythonGrammar.FUNCDEF)) { functionNestingLevel++; } if (functionNestingLevel == 1) { super.visitNode(node); } }
private static boolean isSimpleReturn(AstNode statement) { AstNode returnStatement = lookupOnlyChild(statement.getFirstChild(PythonGrammar.STMT_LIST), PythonGrammar.SIMPLE_STMT, PythonGrammar.RETURN_STMT); return returnStatement != null && lookupOnlyChild(returnStatement.getFirstChild(PythonGrammar.TESTLIST), PythonGrammar.TEST, PythonGrammar.ATOM, PythonGrammar.NAME) != null; }
@Override public void init() { subscribeTo( // Entry points PythonGrammar.FUNCDEF, // Branching nodes // Note that IF_STMT covered by PythonKeyword.IF below PythonGrammar.WHILE_STMT, PythonGrammar.FOR_STMT, PythonGrammar.RETURN_STMT, PythonGrammar.RAISE_STMT, PythonGrammar.EXCEPT_CLAUSE, // Expressions PythonKeyword.IF, PythonKeyword.AND, PythonKeyword.OR); }
public FileMetrics(PythonVisitorContext context, boolean ignoreHeaderComments) { AstNode rootTree = context.rootTree(); numberOfStatements = rootTree.getDescendants(PythonGrammar.STATEMENT).size(); numberOfClasses = rootTree.getDescendants(PythonGrammar.CLASSDEF).size(); complexityVisitor.scanFile(context); cognitiveComplexityVisitor.scanFile(context); fileLinesVisitor = new FileLinesVisitor(ignoreHeaderComments); fileLinesVisitor.scanFile(context); for (AstNode functionDef : rootTree.getDescendants(PythonGrammar.FUNCDEF)) { functionComplexities.add(ComplexityVisitor.complexity(functionDef)); } }
public static int complexity(AstNode node) { ComplexityVisitor visitor = node.is(PythonGrammar.FUNCDEF) ? new FunctionComplexityVisitor() : new ComplexityVisitor(); visitor.scanNode(node); return visitor.complexity; }
private void incrementComplexity(AstNode secondaryLocationNode, int currentNodeComplexity) { if (secondaryLocationConsumer != null) { secondaryLocationConsumer.consume(secondaryLocationNode, secondaryMessage(currentNodeComplexity)); } complexity += currentNodeComplexity; }
public static int complexity(AstNode node, @Nullable SecondaryLocationConsumer secondaryLocationConsumer) { CognitiveComplexityVisitor visitor = new CognitiveComplexityVisitor(secondaryLocationConsumer); visitor.scanNode(node); return visitor.complexity; }
private void incrementWithoutNesting(AstNode secondaryLocationNode) { incrementComplexity(secondaryLocationNode, 1); }
public int complexity() { return complexityVisitor.getComplexity(); }
public int cognitiveComplexity() { return cognitiveComplexityVisitor.getComplexity(); }
@Override public void visitNode(AstNode node) { if (node.is(PythonGrammar.FUNCDEF)) { functionNestingLevel++; } if (functionNestingLevel == 1) { super.visitNode(node); } }
private static boolean isSimpleReturn(AstNode statement) { AstNode returnStatement = lookupOnlyChild(statement.getFirstChild(PythonGrammar.STMT_LIST), PythonGrammar.SIMPLE_STMT, PythonGrammar.RETURN_STMT); return returnStatement != null && lookupOnlyChild(returnStatement.getFirstChild(PythonGrammar.TESTLIST), PythonGrammar.TEST, PythonGrammar.ATOM, PythonGrammar.NAME) != null; }
private void incrementWithNesting(AstNode secondaryLocationNode) { incrementComplexity(secondaryLocationNode, 1 + nestingLevelStack.peek().level()); }