View Javadoc

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.ASTConstructorDeclaration;
9   import net.sourceforge.pmd.ast.ASTUnmodifiedClassDeclaration;
10  
11  import java.util.ArrayList;
12  import java.util.List;
13  
14  public class AtLeastOneConstructorRule extends AbstractRule {
15  
16      public Object visit(ASTUnmodifiedClassDeclaration node, Object data) {
17          List constructors = new ArrayList();
18          node.findChildrenOfType(ASTConstructorDeclaration.class, constructors, false);
19          if (constructors.isEmpty()) {
20              RuleContext ctx = (RuleContext) data;
21              ctx.getReport().addRuleViolation(createRuleViolation(ctx, node.getBeginLine()));
22          }
23          return super.visit(node, data);
24      }
25  }