Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sourceforge.pmd.rules.design
Class ConfusingTernary

    java.lang.Object
      net.sourceforge.pmd.CommonAbstractRule
          net.sourceforge.pmd.AbstractJavaRule
              net.sourceforge.pmd.AbstractRule
                  net.sourceforge.pmd.rules.design.ConfusingTernary

All Implemented Interfaces:
  JavaParserVisitor, Rule

    public class ConfusingTernary

extends AbstractRule

if (x != y) { diff(); } else { same(); } and
(!x ? diff() : same());.

XPath can handle the easy cases, e.g.:

        //IfStatement[
          Statement[2]
          and Expression[
            EqualityExpression[@Image="!="] or
            UnaryExpressionNotPlusMinus[@Image="!"]]]

but "&&" and "||" are difficult, since we need a match for all children instead of just one. This can be done by using a double-negative, e.g.:

        not(*[not(matchme)])

Still, XPath is unable to handle arbitrarily nested cases, since it lacks recursion, e.g.:

       if (((x != !y)) || !(x)) { diff(); } else { same(); }

Field Summary

Fields inherited from interface net.sourceforge.pmd.Rule
`LOWEST_PRIORITY, PRIORITIES`

Constructor Summary
`ConfusingTernary()`

Method Summary
`java.lang.Object` | `visit(ASTConditionalExpression node, java.lang.Object data)`
`java.lang.Object` | `visit(ASTIfStatement node, java.lang.Object data)`

Methods inherited from class net.sourceforge.pmd.AbstractJavaRule
`addViolation, addViolation, addViolation, addViolationWithMessage, apply, 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, 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, propertiesByName, 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`

Constructor Detail

### ConfusingTernary

    public ConfusingTernary()

Method Detail

### 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(ASTConditionalExpression node,
                                  java.lang.Object data)

  Specified by:
    `visit` in interface `JavaParserVisitor`
  Overrides:
    `visit` in class `AbstractJavaRule`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2009 InfoEther. All Rights Reserved.