1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package net.sourceforge.pmd.rules; 5 6 import net.sourceforge.pmd.AbstractRule; 7 import net.sourceforge.pmd.RuleContext; 8 import net.sourceforge.pmd.ast.ASTUnmodifiedClassDeclaration; 9 import net.sourceforge.pmd.symboltable.VariableNameDeclaration; 10 11 import java.text.MessageFormat; 12 import java.util.Iterator; 13 14 public class UnusedPrivateFieldRule extends AbstractRule { 15 16 public Object visit(ASTUnmodifiedClassDeclaration node, Object data) { 17 for (Iterator i = node.getScope().getVariableDeclarations(false).keySet().iterator(); i.hasNext();) { 18 VariableNameDeclaration decl = (VariableNameDeclaration) i.next(); 19 if (decl.getAccessNodeParent().isPrivate() && !decl.getImage().equals("serialVersionUID") && !decl.getImage().equals("serialPersistentFields") && !decl.getImage().equals("IDENT")) { 20 RuleContext ctx = (RuleContext) data; 21 ctx.getReport().addRuleViolation(createRuleViolation(ctx, decl.getLine(), MessageFormat.format(getMessage(), new Object[]{decl.getImage()}))); 22 } 23 } 24 return super.visit(node, data); 25 } 26 27 }