/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.vm.rule.basic; import org.apache.commons.lang3.StringUtils; import net.sourceforge.pmd.lang.vm.ast.ASTBlock; import net.sourceforge.pmd.lang.vm.ast.ASTElseIfStatement; import net.sourceforge.pmd.lang.vm.ast.ASTElseStatement; import net.sourceforge.pmd.lang.vm.ast.ASTIfStatement; import net.sourceforge.pmd.lang.vm.ast.ASTText; import net.sourceforge.pmd.lang.vm.ast.AbstractVmNode; import net.sourceforge.pmd.lang.vm.rule.AbstractVmRule; public class EmptyIfStmtRule extends AbstractVmRule { @Override public Object visit(final ASTIfStatement node, final Object data) { handleIf(node, data); return super.visit(node, data); } @Override public Object visit(final ASTElseIfStatement node, final Object data) { handleIf(node, data); return super.visit(node, data); } @Override public Object visit(final ASTElseStatement node, final Object data) { handleIf(node, data); return super.visit(node, data); } private void handleIf(final AbstractVmNode node, final Object data) { final ASTBlock block = node.getFirstChildOfType(ASTBlock.class); if (block.jjtGetNumChildren() == 0) { addViolation(data, node); } else if (block.jjtGetNumChildren() == 1 && block.jjtGetChild(0) instanceof ASTText && StringUtils.isBlank(((AbstractVmNode) block.jjtGetChild(0)).getFirstToken().toString())) { addViolation(data, node); } } }