View Javadoc
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.ASTCompilationUnit; 6 import net.sourceforge.pmd.ast.ASTImportDeclaration; 7 import net.sourceforge.pmd.ast.ASTName; 8 import net.sourceforge.pmd.ast.ASTPackageDeclaration; 9 10 public class ImportFromSamePackageRule extends AbstractRule { 11 12 private String packageName; 13 14 public Object visit(ASTCompilationUnit node, Object data) { 15 packageName = null; 16 return super.visit(node, data); 17 } 18 19 public Object visit(ASTPackageDeclaration node, Object data) { 20 packageName = ((ASTName) node.jjtGetChild(0)).getImage(); 21 return data; 22 } 23 24 public Object visit(ASTImportDeclaration node, Object data) { 25 ASTName nameNode = node.getImportedNameNode(); 26 RuleContext ctx = (RuleContext) data; 27 <b>if (packageName != null && !node.isImportOnDemand() && packageName.equals(getPackageName(nameNode.getImage()))) { 28 addViolation(ctx, node); 29 } 30 31 // special case 32 <b>if (packageName == null && getPackageName(nameNode.getImage()).equals("")) { 33 addViolation(ctx, node); 34 } 35 return data; 36 } 37 38 private void addViolation(RuleContext ctx, ASTImportDeclaration node) { 39 ctx.getReport().addRuleViolation(createRuleViolation(ctx, node.getBeginLine())); 40 } 41 42 private String getPackageName(String importName) { 43 if (importName.indexOf('.') == -1) { 44 return ""; 45 } 46 int lastDot = importName.lastIndexOf('.'); 47 return importName.substring(0, lastDot); 48 } 49 50 }

This page was automatically generated by Maven