package net.sourceforge.pmd.rules;

import net.sourceforge.pmd.AbstractRule;
import net.sourceforge.pmd.symboltable.NameOccurrence;
import net.sourceforge.pmd.ast.ASTVariableDeclaratorId;

import java.util.Iterator;

public class SymbolTableExample extends AbstractRule {

    public Object visit(ASTVariableDeclaratorId node, Object data) {
        if (!node.getNameDeclaration().getImage().equals("x")) {
            return data;
        }
        System.out.println("Variable x is of type '" + node.getNameDeclaration().getTypeImage() + "'");
        for (Iterator i = node.getUsages().iterator(); i.hasNext();) {
            NameOccurrence occurrence = (NameOccurrence)i.next();
            System.out.println("The variable x is used at line " + occurrence.getLocation().getBeginLine());
        }
        return data;
    }

}
