View Javadoc
1 package net.sourceforge.pmd.rules.design; 2 3 import net.sourceforge.pmd.AbstractRule; 4 import net.sourceforge.pmd.RuleContext; 5 import net.sourceforge.pmd.ast.ASTFieldDeclaration; 6 import net.sourceforge.pmd.ast.ASTFormalParameter; 7 import net.sourceforge.pmd.ast.ASTName; 8 import net.sourceforge.pmd.ast.ASTResultType; 9 import net.sourceforge.pmd.ast.Node; 10 11 import java.text.MessageFormat; 12 import java.util.HashSet; 13 import java.util.Set; 14 15 public class LooseCouplingRule extends AbstractRule { 16 17 private Set implClassNames = new HashSet(); 18 19 public LooseCouplingRule() { 20 super(); 21 implClassNames.add("HashSet"); 22 implClassNames.add("HashMap"); 23 implClassNames.add("ArrayList"); 24 implClassNames.add("LinkedHashMap"); 25 implClassNames.add("LinkedHashSet"); 26 implClassNames.add("TreeSet"); 27 implClassNames.add("TreeMap"); 28 implClassNames.add("Vector"); 29 implClassNames.add("java.util.HashSet"); 30 implClassNames.add("java.util.HashMap"); 31 implClassNames.add("java.util.ArrayList"); 32 implClassNames.add("java.util.LinkedHashMap"); 33 implClassNames.add("java.util.LinkedHashSet"); 34 implClassNames.add("java.util.TreeSet"); 35 implClassNames.add("java.util.TreeMap"); 36 implClassNames.add("java.util.Vector"); 37 } 38 39 public Object visit(ASTName node, Object data) { 40 Node parent = node.jjtGetParent().jjtGetParent(); 41 if (implClassNames.contains(node.getImage()) && (parent instanceof ASTFieldDeclaration || parent instanceof ASTFormalParameter || parent instanceof ASTResultType)) { 42 RuleContext ctx = (RuleContext) data; 43 ctx.getReport().addRuleViolation(createRuleViolation(ctx, node.getBeginLine(), MessageFormat.format(getMessage(), new Object[]{node.getImage()}))); 44 } 45 return data; 46 } 47 }

This page was automatically generated by Maven