package net.sourceforge.pmd.rules;

import net.sourceforge.pmd.AbstractRule;
import net.sourceforge.pmd.ast.ASTBlock;
import net.sourceforge.pmd.ast.ASTEmptyStatement;
import net.sourceforge.pmd.ast.ASTIfStatement;
import net.sourceforge.pmd.ast.ASTStatement;
import net.sourceforge.pmd.ast.Node;

public class EmptyIf extends AbstractRule {

    public Object visit(ASTIfStatement node, Object data) {
        ASTStatement stmt = (ASTStatement)node.jjtGetChild(1);
        Node stmtChild = stmt.jjtGetChild(0);
        if (stmtChild instanceof ASTEmptyStatement) {
            addViolation(data, node);
        } else if (stmtChild instanceof ASTBlock && stmtChild.jjtGetNumChildren() == 0) {
            addViolation(data, node);
        }
        return super.visit(node, data);
    }
}
