1 package net.sourceforge.pmd.rules; 2 3 import net.sourceforge.pmd.AbstractRule; 4 import net.sourceforge.pmd.RuleContext; 5 import net.sourceforge.pmd.ast.ASTClassOrInterfaceDeclaration; 6 import net.sourceforge.pmd.ast.ASTMethodDeclarator; 7 8 import java.util.Iterator; 9 import java.util.List; 10 11 public class MethodWithSameNameAsEnclosingClass extends AbstractRule { 12 13 public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { 14 List methods = node.findChildrenOfType(ASTMethodDeclarator.class); 15 for (Iterator i = methods.iterator(); i.hasNext();) { 16 ASTMethodDeclarator m = (ASTMethodDeclarator)i.next(); 17 if (m.getImage().equals(node.getImage())) { 18 RuleContext ctx = (RuleContext)data; 19 ctx.getReport().addRuleViolation(createRuleViolation(ctx, m)); 20 } 21 } 22 return super.visit(node, data); 23 } 24 }