Class NPathComplexityRule
- java.lang.Object
-
- net.sourceforge.pmd.properties.AbstractPropertySource
-
- net.sourceforge.pmd.lang.rule.AbstractRule
-
- net.sourceforge.pmd.lang.plsql.rule.AbstractPLSQLRule
-
- net.sourceforge.pmd.lang.plsql.rule.AbstractStatisticalPLSQLRule
-
- net.sourceforge.pmd.lang.plsql.rule.design.NPathComplexityRule
-
- All Implemented Interfaces:
PLSQLParserVisitor,net.sourceforge.pmd.lang.rule.ImmutableLanguage,net.sourceforge.pmd.lang.rule.stat.StatisticalRule,net.sourceforge.pmd.properties.PropertySource,net.sourceforge.pmd.Rule
public class NPathComplexityRule extends AbstractStatisticalPLSQLRule
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
-
-
Constructor Summary
Constructors Constructor Description NPathComplexityRule()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object[]getViolationParameters(net.sourceforge.pmd.stat.DataPoint point)static intsumExpressionComplexity(ASTExpression expr)Calculate the boolean complexity of the given expression.java.lang.Objectvisit(ASTCaseStatement node, java.lang.Object data)java.lang.Objectvisit(ASTCaseWhenClause node, java.lang.Object data)java.lang.Objectvisit(ASTConditionalOrExpression node, java.lang.Object data)java.lang.Objectvisit(ASTElseClause node, java.lang.Object data)java.lang.Objectvisit(ASTElsifClause node, java.lang.Object data)java.lang.Objectvisit(ASTForStatement node, java.lang.Object data)java.lang.Objectvisit(ASTIfStatement node, java.lang.Object data)java.lang.Objectvisit(ASTLoopStatement node, java.lang.Object data)java.lang.Objectvisit(ASTMethodDeclaration node, java.lang.Object data)java.lang.Objectvisit(ASTProgramUnit node, java.lang.Object data)java.lang.Objectvisit(ASTReturnStatement node, java.lang.Object data)java.lang.Objectvisit(ASTTriggerTimingPointSection node, java.lang.Object data)java.lang.Objectvisit(ASTTriggerUnit node, java.lang.Object data)java.lang.Objectvisit(ASTTypeMethod node, java.lang.Object data)java.lang.Objectvisit(ASTWhileStatement node, java.lang.Object data)java.lang.Objectvisit(PLSQLNode node, java.lang.Object data)-
Methods inherited from class net.sourceforge.pmd.lang.plsql.rule.AbstractStatisticalPLSQLRule
addDataPoint, apply
-
Methods inherited from class net.sourceforge.pmd.lang.plsql.rule.AbstractPLSQLRule
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, 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.lang.rule.AbstractRule
addExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, deepCopy, deepCopyValuesTo, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, getPropertySourceType, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, hashCode, isDeprecated, isDfa, isMultifile, isRuleChain, isTypeResolution, setDeprecated, setDescription, setDfa, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setMultifile, setName, setPriority, setRuleClass, setRuleSetName, setSince, setTypeResolution, setUsesDFA, setUsesMultifile, setUsesTypeResolution, start, usesDFA, usesMultifile, usesRuleChain, usesTypeResolution
-
Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, isPropertyOverridden, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.sourceforge.pmd.properties.PropertySource
definePropertyDescriptor, dysfunctionReason, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, isPropertyOverridden, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
Methods inherited from interface net.sourceforge.pmd.Rule
addExample, addRuleChainVisit, addRuleChainVisit, deepCopy, end, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, isDeprecated, isDfa, isMultifile, isRuleChain, isTypeResolution, setDeprecated, setDescription, setDfa, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setMultifile, setName, setPriority, setRuleClass, setRuleSetName, setSince, setTypeResolution, setUsesDFA, setUsesMultifile, setUsesTypeResolution, start, usesDFA, usesMultifile, usesRuleChain, usesTypeResolution
-
-
-
-
Method Detail
-
visit
public java.lang.Object visit(ASTMethodDeclaration node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTProgramUnit node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTTypeMethod node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTTriggerUnit node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTTriggerTimingPointSection node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(PLSQLNode node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTIfStatement node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTElsifClause node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTElseClause node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTWhileStatement node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTLoopStatement node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTForStatement node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTReturnStatement node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTCaseWhenClause node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTCaseStatement node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
visit
public java.lang.Object visit(ASTConditionalOrExpression node, java.lang.Object data)
- Specified by:
visitin interfacePLSQLParserVisitor- Overrides:
visitin classAbstractPLSQLRule
-
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
-
getViolationParameters
public java.lang.Object[] getViolationParameters(net.sourceforge.pmd.stat.DataPoint point)
- Specified by:
getViolationParametersin interfacenet.sourceforge.pmd.lang.rule.stat.StatisticalRule- Overrides:
getViolationParametersin classAbstractStatisticalPLSQLRule
-
-