These rules deal with different problems that can occur with a class' import statements.
Avoid duplicate import statements.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.DuplicateImportsRule
Here's an example of code that would trigger this rule:
import java.lang.String; import java.lang.*; public class Foo {}
Avoid importing anything from the package 'java.lang'. These classes are automatically imported (JLS 7.5.3).
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.DontImportJavaLang
Here's an example of code that would trigger this rule:
// this is bad import java.lang.String; public class Foo {} // --- in another source code file... // this is bad import java.lang.*; public class Foo {}
Avoid unused import statements.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.UnusedImportsRule
Here's an example of code that would trigger this rule:
// this is bad import java.io.File; public class Foo {}
No need to import a type that lives in the same package.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.ImportFromSamePackageRule
Here's an example of code that would trigger this rule:
package foo; import foo.Buz; // no need for this import foo.*; // or this public class Bar{}