These rules deal with different problems that can occur with import statements.
Since: PMD 0.5
Priority: 4
Duplicate or overlapping import statements should be avoided.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.java.rule.imports.DuplicateImportsRule
Example(s):
import java.lang.String; import java.lang.*; public class Foo {}
This rule has the following properties:
Name | Default Value | Description |
---|---|---|
violationSuppressRegex | Suppress violations with messages matching a regular expression | |
violationSuppressXPath | Suppress violations on nodes which match a given relative XPath expression. |
Since: PMD 0.5
Priority: 4
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.lang.java.rule.imports.DontImportJavaLangRule
Example(s):
import java.lang.String; // this is unnecessary public class Foo {} // --- in another source code file... import java.lang.*; // this is bad public class Foo {}
This rule has the following properties:
Name | Default Value | Description |
---|---|---|
violationSuppressRegex | Suppress violations with messages matching a regular expression | |
violationSuppressXPath | Suppress violations on nodes which match a given relative XPath expression. |
Since: PMD 1.0
Priority: 4
Avoid the use of unused import statements to prevent unwanted dependencies.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.java.rule.imports.UnusedImportsRule
Example(s):
// this is bad import java.io.File; public class Foo {}
This rule has the following properties:
Name | Default Value | Description |
---|---|---|
violationSuppressRegex | Suppress violations with messages matching a regular expression | |
violationSuppressXPath | Suppress violations on nodes which match a given relative XPath expression. |
Since: PMD 1.02
Priority: 3
There is no need to import a type that lives in the same package.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.java.rule.imports.ImportFromSamePackageRule
Example(s):
package foo; import foo.Buz; // no need for this import foo.*; // or this public class Bar{}
This rule has the following properties:
Name | Default Value | Description |
---|---|---|
violationSuppressRegex | Suppress violations with messages matching a regular expression | |
violationSuppressXPath | Suppress violations on nodes which match a given relative XPath expression. |
Since: PMD 4.1
Priority: 3
If you overuse the static import feature, it can make your program unreadable and unmaintainable, polluting its namespace with all the static members you import. Readers of your code (including you, a few months after you wrote it) will not know which class a static member comes from (Sun 1.5 Language Guide).
.[count(ImportDeclaration[@Static = 'true']) > $maximumStaticImports]
Example(s):
import static Lennon; import static Ringo; import static George; import static Paul; import static Yoko; // Too much !
This rule has the following properties:
Name | Default Value | Description |
---|---|---|
maximumStaticImports | 4 | All static imports can be disallowed by setting this to 0 |
Since: PMD 5.0
Priority: 4
Import statements allow the use of non-fully qualified names. The use of a fully qualified name which is covered by an import statement is redundant. Consider using the non-fully qualified name.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.java.rule.imports.UnnecessaryFullyQualifiedNameRule
Example(s):
import java.util.List; public class Foo { private java.util.List list1; // Unnecessary FQN private List list2; // More appropriate given import of 'java.util.List' }
This rule has the following properties:
Name | Default Value | Description |
---|---|---|
violationSuppressRegex | Suppress violations with messages matching a regular expression | |
violationSuppressXPath | Suppress violations on nodes which match a given relative XPath expression. |