public class ConfusingTernaryRule extends AbstractJavaRule
//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();
}
propertyDescriptors, propertyValuesByDescriptorVIOLATION_SUPPRESS_REGEX_DESCRIPTOR, VIOLATION_SUPPRESS_XPATH_DESCRIPTOR| Constructor and Description |
|---|
ConfusingTernaryRule() |
| Modifier and Type | Method and Description |
|---|---|
Object |
visit(ASTConditionalExpression node,
Object data) |
Object |
visit(ASTIfStatement node,
Object data) |
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, visit, visit, visit, visit, visit, visitAlladdExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, deepCopyValuesTo, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, hashCode, isDeprecated, setDeprecated, setDescription, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setName, setPriority, setRuleClass, setRuleSetName, setSince, setUsesDFA, setUsesTypeResolution, start, usesDFA, usesRuleChain, usesTypeResolutioncopyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, useDefaultValueFor, usesDefaultValuesclone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitdefinePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, useDefaultValueFor, usesDefaultValuespublic Object visit(ASTIfStatement node, Object data)
visit in interface JavaParserVisitorvisit in class AbstractJavaRulepublic Object visit(ASTConditionalExpression node, Object data)
visit in interface JavaParserVisitorvisit in class AbstractJavaRuleCopyright © 2002-2014 InfoEther. All Rights Reserved.