DontImportJavaLangRule.java
01 package net.sourceforge.pmd.lang.java.rule.imports;
02 
03 import net.sourceforge.pmd.lang.java.ast.ASTImportDeclaration;
04 import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule;
05 
06 public class DontImportJavaLangRule extends AbstractJavaRule {
07 
08     private static final Package JAVA_LANG_PACKAGE = Package.getPackage("java.lang");
09 
10     @Override
11     public Object visit(ASTImportDeclaration node, Object data) {
12 
13   if (node.isStatic()) {
14       return data;
15   }
16 
17   if (node.getPackage() != null) {
18       if (node.getPackage().equals(JAVA_LANG_PACKAGE)) {
19     addViolation(data, node);
20       }
21   else {
22       String img = node.jjtGetChild(0).getImage();
23       if (img.startsWith("java.lang")) {
24     if (img.startsWith("java.lang.ref"|| img.startsWith("java.lang.reflect")
25       || img.startsWith("java.lang.annotation"|| img.startsWith("java.lang.instrument")
26       || img.startsWith("java.lang.management"|| img.startsWith("java.lang.Thread.")) {
27         return data;
28     }
29     addViolation(data, node);
30       }
31   }
32   return data;
33     }
34 }