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

This page was automatically generated by Maven