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

This page was automatically generated by Maven