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 9 import java.text.MessageFormat; 10 import java.util.HashSet; 11 import java.util.Iterator; 12 import java.util.Set; 13 14 public class UnusedImportsRule extends AbstractRule { 15 16 private Set imports = new HashSet(); 17 18 public Object visit(ASTCompilationUnit node, Object data) { 19 imports.clear(); 20 21 super.visit(node, data); 22 23 RuleContext ctx = (RuleContext) data; 24 for (Iterator i = imports.iterator(); i.hasNext();) { 25 ImportWrapper wrapper = (ImportWrapper) i.next(); 26 String msg = MessageFormat.format(getMessage(), new Object[]{wrapper.getName()}); 27 ctx.getReport().addRuleViolation(createRuleViolation(ctx, wrapper.getLine(), msg)); 28 } 29 return data; 30 } 31 32 public Object visit(ASTImportDeclaration node, Object data) { 33 if (!node.isImportOnDemand()) { 34 ASTName importedType = (ASTName) node.jjtGetChild(0); 35 String className; 36 if (importedType.getImage().indexOf('.') != -1) { 37 int lastDot = importedType.getImage().lastIndexOf('.') + 1; 38 className = importedType.getImage().substring(lastDot); 39 } else { 40 className = importedType.getImage(); 41 } 42 ImportWrapper wrapper = new ImportWrapper(className, node.getBeginLine()); 43 imports.add(wrapper); 44 } 45 46 return data; 47 } 48 49 public Object visit(ASTName node, Object data) { 50 String name; 51 if (node.getImage().indexOf('.') == -1) { 52 name = node.getImage(); 53 } else { 54 name = node.getImage().substring(0, node.getImage().indexOf('.')); 55 } 56 ImportWrapper candidate = new ImportWrapper(name, -1); 57 if (imports.contains(candidate)) { 58 imports.remove(candidate); 59 } 60 return data; 61 } 62 63 64 }

This page was automatically generated by Maven