use of net.sourceforge.pmd.lang.java.ast.ASTSwitchStatement in project pmd by pmd.
the class StatementAndBraceFinder method visit.
@Override
public Object visit(ASTExpression node, Object data) {
if (!(data instanceof Structure)) {
return data;
}
Structure dataFlow = (Structure) data;
String loggerTag = "parent";
Node parent = node.jjtGetParent();
// TODO what about throw stmts?
if (parent instanceof ASTIfStatement) {
// START IF
dataFlow.createNewNode(node);
dataFlow.pushOnStack(NodeType.IF_EXPR, dataFlow.getLast());
tryToLog(loggerTag, NodeType.IF_EXPR, node);
} else if (parent instanceof ASTWhileStatement) {
// START WHILE
dataFlow.createNewNode(node);
dataFlow.pushOnStack(NodeType.WHILE_EXPR, dataFlow.getLast());
tryToLog(loggerTag, NodeType.WHILE_EXPR, node);
} else if (parent instanceof ASTSwitchStatement) {
// START SWITCH
dataFlow.createNewNode(node);
dataFlow.pushOnStack(NodeType.SWITCH_START, dataFlow.getLast());
tryToLog(loggerTag, NodeType.SWITCH_START, node);
} else if (parent instanceof ASTForStatement) {
// FOR EXPR
dataFlow.createNewNode(node);
dataFlow.pushOnStack(NodeType.FOR_EXPR, dataFlow.getLast());
tryToLog(loggerTag, NodeType.FOR_EXPR, node);
} else if (parent instanceof ASTDoStatement) {
// DO EXPR
dataFlow.createNewNode(node);
dataFlow.pushOnStack(NodeType.DO_EXPR, dataFlow.getLast());
tryToLog(loggerTag, NodeType.DO_EXPR, node);
} else if (parent instanceof ASTAssertStatement) {
dataFlow.createNewNode(node);
dataFlow.pushOnStack(NodeType.ASSERT_STATEMENT, dataFlow.getLast());
tryToLog(loggerTag, NodeType.ASSERT_STATEMENT, node);
}
return super.visit(node, data);
}
use of net.sourceforge.pmd.lang.java.ast.ASTSwitchStatement in project pmd by pmd.
the class InsufficientStringBufferDeclarationRule method getFirstParentBlock.
/**
* Locate the block that the given node is in, if any
*
* @param node
* The node we're looking for a parent of
* @return Node - The node that corresponds to any block that may be a
* parent of this object
*/
private Node getFirstParentBlock(Node node) {
Node parentNode = node.jjtGetParent();
Node lastNode = node;
while (parentNode != null && !BLOCK_PARENTS.contains(parentNode.getClass())) {
lastNode = parentNode;
parentNode = parentNode.jjtGetParent();
}
if (parentNode instanceof ASTIfStatement) {
parentNode = lastNode;
} else if (parentNode instanceof ASTSwitchStatement) {
parentNode = getSwitchParent(parentNode, lastNode);
}
return parentNode;
}
use of net.sourceforge.pmd.lang.java.ast.ASTSwitchStatement in project pmd by pmd.
the class ConsecutiveLiteralAppendsRule method getFirstParentBlock.
/**
* Get the first parent. Keep track of the last node though. For If
* statements it's the only way we can differentiate between if's and else's
* For switches it's the only way we can differentiate between switches
*
* @param node
* The node to check
* @return The first parent block
*/
private Node getFirstParentBlock(Node node) {
Node parentNode = node.jjtGetParent();
Node lastNode = node;
while (parentNode != null && !BLOCK_PARENTS.contains(parentNode.getClass())) {
lastNode = parentNode;
parentNode = parentNode.jjtGetParent();
}
if (parentNode instanceof ASTIfStatement) {
parentNode = lastNode;
} else if (parentNode instanceof ASTSwitchStatement) {
parentNode = getSwitchParent(parentNode, lastNode);
}
return parentNode;
}
Aggregations