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.ASTClassOrInterfaceDeclaration; 9 import net.sourceforge.pmd.ast.ASTFieldDeclaration; 10 11 public class AvoidFieldNameMatchingTypeName extends AbstractRule { 12 13 public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { 14 if (node.isInterface()) { 15 return data; 16 } 17 return super.visit(node, data); 18 } 19 20 public Object visit(ASTFieldDeclaration node, Object data) { 21 String varName = node.getVariableName(); 22 if (varName!=null) { 23 varName = varName.toLowerCase(); 24 ASTClassOrInterfaceDeclaration cl = (ASTClassOrInterfaceDeclaration) node.getFirstParentOfType(ASTClassOrInterfaceDeclaration.class); 25 if (cl!=null && cl.getImage() != null) { 26 if (varName.equals(cl.getImage().toLowerCase())) { 27 addViolation((RuleContext) data, node); 28 } 29 } 30 } 31 return data; 32 } 33 }