MethodWithSameNameAsEnclosingClassRule.java
01 package net.sourceforge.pmd.lang.java.rule.naming;
02 
03 import java.util.List;
04 
05 import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
06 import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclarator;
07 import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule;
08 
09 public class MethodWithSameNameAsEnclosingClassRule extends AbstractJavaRule {
10 
11     @Override
12     public Object visit(ASTClassOrInterfaceDeclaration node, Object data) {
13         List<ASTMethodDeclarator> methods = node.findDescendantsOfType(ASTMethodDeclarator.class);
14         for (ASTMethodDeclarator m: methods) {
15             if (m.hasImageEqualTo(node.getImage())) {
16                 addViolation(data, m);
17             }
18         }
19         return super.visit(node, data);
20     }
21 }