Clover coverage report - PMD - 3.3
Coverage timestamp: Thu Sep 15 2005 17:59:57 EDT
file stats: LOC: 69   Methods: 5
NCLOC: 56   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
UnusedImportsRule.java 80% 96.2% 100% 92.7%
coverage coverage
 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.ast.ASTClassOrInterfaceType;
 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.SimpleNode;
 12   
 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  9 public Object visit(ASTCompilationUnit node, Object data) {
 22  9 imports.clear();
 23  9 super.visit(node, data);
 24  9 for (Iterator i = imports.iterator(); i.hasNext();) {
 25  3 ImportWrapper wrapper = (ImportWrapper) i.next();
 26  3 addViolation(data, wrapper.getNode(), wrapper.getFullName());
 27    }
 28  9 return data;
 29    }
 30   
 31  12 public Object visit(ASTImportDeclaration node, Object data) {
 32  12 if (!node.isImportOnDemand()) {
 33  12 ASTName importedType = (ASTName) node.jjtGetChild(0);
 34  12 String className;
 35  12 if (importedType.getImage().indexOf('.') != -1) {
 36  12 int lastDot = importedType.getImage().lastIndexOf('.') + 1;
 37  12 className = importedType.getImage().substring(lastDot);
 38    } else {
 39  0 className = importedType.getImage();
 40    }
 41  12 imports.add(new ImportWrapper(importedType.getImage(), className, node));
 42    }
 43   
 44  12 return data;
 45    }
 46   
 47  7 public Object visit(ASTClassOrInterfaceType node, Object data) {
 48  7 check(node);
 49  7 return super.visit(node, data);
 50    }
 51   
 52  7 public Object visit(ASTName node, Object data) {
 53  7 check(node);
 54  7 return data;
 55    }
 56   
 57  14 private void check(SimpleNode node) {
 58  14 String name;
 59  14 if (node.getImage().indexOf('.') == -1) {
 60  12 name = node.getImage();
 61    } else {
 62  2 name = node.getImage().substring(0, node.getImage().indexOf('.'));
 63    }
 64  14 ImportWrapper candidate = new ImportWrapper(node.getImage(), name, new SimpleNode(-1));
 65  14 if (imports.contains(candidate)) {
 66  9 imports.remove(candidate);
 67    }
 68    }
 69    }