net.sourceforge.pmd.rules.design

Class NpathComplexity

public class NpathComplexity extends StatisticalRule

NPath complexity is a measurement of the acyclic execution paths through a function. See Nejmeh, Communications of the ACM Feb 1988 pp 188-200.

Author: Jason Bennett

Method Summary
protected voidmakeViolations(RuleContext ctx, Set<DataPoint> p)
static intsumExpressionComplexity(ASTExpression expr)
Calculate the boolean complexity of the given expression.
Objectvisit(ASTMethodDeclaration node, Object data)
Objectvisit(SimpleJavaNode node, Object data)
Objectvisit(ASTIfStatement node, Object data)
Objectvisit(ASTWhileStatement node, Object data)
Objectvisit(ASTDoStatement node, Object data)
Objectvisit(ASTForStatement node, Object data)
Objectvisit(ASTReturnStatement node, Object data)
Objectvisit(ASTSwitchStatement node, Object data)
Objectvisit(ASTTryStatement node, Object data)
Objectvisit(ASTConditionalExpression node, Object data)

Method Detail

makeViolations

protected void makeViolations(RuleContext ctx, Set<DataPoint> p)

sumExpressionComplexity

public static int sumExpressionComplexity(ASTExpression expr)
Calculate the boolean complexity of the given expression. NPath boolean complexity is the sum of && and || tokens. This is calculated by summing the number of children of the &&'s (minus one) and the children of the ||'s (minus one).

Note that this calculation applies to Cyclomatic Complexity as well.

Parameters: expr control structure expression

Returns: complexity of the boolean expression

visit

public Object visit(ASTMethodDeclaration node, Object data)

visit

public Object visit(SimpleJavaNode node, Object data)

visit

public Object visit(ASTIfStatement node, Object data)

visit

public Object visit(ASTWhileStatement node, Object data)

visit

public Object visit(ASTDoStatement node, Object data)

visit

public Object visit(ASTForStatement node, Object data)

visit

public Object visit(ASTReturnStatement node, Object data)

visit

public Object visit(ASTSwitchStatement node, Object data)

visit

public Object visit(ASTTryStatement node, Object data)

visit

public Object visit(ASTConditionalExpression node, Object data)