net.sourceforge.pmd.rules.design
Class NpathComplexity
java.lang.Object
net.sourceforge.pmd.CommonAbstractRule
net.sourceforge.pmd.AbstractJavaRule
net.sourceforge.pmd.stat.StatisticalRule
net.sourceforge.pmd.rules.design.NpathComplexity
- All Implemented Interfaces:
- JavaParserVisitor, Rule
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 void |
makeViolations(RuleContext ctx,
java.util.Set<DataPoint> p)
|
static int |
sumExpressionComplexity(ASTExpression expr)
Calculate the boolean complexity of the given expression. |
java.lang.Object |
visit(ASTConditionalExpression node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTDoStatement node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTForStatement node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTIfStatement node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTMethodDeclaration node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTReturnStatement node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTSwitchStatement node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTTryStatement node,
java.lang.Object data)
|
java.lang.Object |
visit(ASTWhileStatement node,
java.lang.Object data)
|
java.lang.Object |
visit(SimpleJavaNode node,
java.lang.Object data)
|
Methods inherited from class net.sourceforge.pmd.AbstractJavaRule |
addViolation, addViolation, addViolation, addViolationWithMessage, getDeclaringType, importsPackage, isQualifiedName, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitAll |
Methods inherited from class net.sourceforge.pmd.CommonAbstractRule |
addExample, addProperties, addProperty, addRuleChainVisit, asFixedMap, asFixedMap, end, equals, getBooleanProperties, getBooleanProperty, getBooleanProperty, getDescription, getDoubleProperties, getDoubleProperty, getDoubleProperty, getExample, getExamples, getExternalInfoUrl, getIntProperties, getIntProperty, getIntProperty, getMessage, getName, getPriority, getPriorityName, getProperties, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, getStringProperties, getStringProperty, getStringProperty, getTypeProperties, getTypeProperty, hashCode, hasProperty, include, propertyDescriptorFor, setDescription, setExternalInfoUrl, setInclude, setMessage, setName, setPriority, setProperties, setProperty, setRuleClass, setRuleSetName, setSince, setUsesDFA, setUsesTypeResolution, start, usesDFA, usesRuleChain, usesTypeResolution |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
NpathComplexity
public NpathComplexity()
visit
public java.lang.Object visit(ASTMethodDeclaration node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(SimpleJavaNode node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTIfStatement node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTWhileStatement node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTDoStatement node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTForStatement node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTReturnStatement node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTSwitchStatement node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTTryStatement node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
visit
public java.lang.Object visit(ASTConditionalExpression node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class AbstractJavaRule
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
makeViolations
protected void makeViolations(RuleContext ctx,
java.util.Set<DataPoint> p)
- Overrides:
makeViolations
in class StatisticalRule