1 package net.sourceforge.pmd.rules.codesize;
2
3 import java.util.Set;
4
5 import net.sourceforge.pmd.RuleContext;
6 import net.sourceforge.pmd.ast.ASTConstructorDeclaration;
7 import net.sourceforge.pmd.ast.ASTExplicitConstructorInvocation;
8 import net.sourceforge.pmd.stat.DataPoint;
9 import net.sourceforge.pmd.util.NumericConstants;
10
11 /**
12 * Non-commented source statement counter for constructors.
13 *
14 * @author Jason Bennett
15 */
16 public class NcssConstructorCount extends AbstractNcssCount {
17
18 /**
19 * Count constructor declarations. This includes any explicit super() calls.
20 */
21 public NcssConstructorCount() {
22 super( ASTConstructorDeclaration.class );
23 }
24
25 public Object visit(ASTExplicitConstructorInvocation node, Object data) {
26 return NumericConstants.ONE;
27 }
28
29 protected void makeViolations(RuleContext ctx, Set<DataPoint> p) {
30 for ( DataPoint point: p ) {
31
32 addViolation(
33 ctx,
34 point.getNode(),
35 new String[] {
36 String.valueOf( ( (ASTConstructorDeclaration) point.getNode() ).getParameterCount() ),
37 String.valueOf( (int) point.getScore() ) } );
38 }
39 }
40 }