Checks that there are no import statements that use the * notation.
Rationale: Importing all classes from a package or static members from a class leads to tight coupling between packages or classes and might lead to problems when a new version of a library introduces name clashes.
| name | description | type | default value | 
|---|---|---|---|
| excludes | packages where star imports are allowed. Note that this property is not recursive, subpackages of excluded packages are not automatically excluded. | list of strings | empty list | 
| allowClassImports | whether to allow starred class imports like import java.util.*;. | Boolean | false | 
| allowStaticMemberImports | whether to allow starred static member imports like import static org.junit.Assert.*; | Boolean | false | 
An example how to configure the check so that star imports from packages java.io and java.net as well as static members from class from java.lang.Math are allowed:
<module name="AvoidStarImport">
   <property name="excludes" value="java.io,java.net,java.lang.Math"/>
   <property name="allowClassImports" value="false"/>
   <property name="allowStaticMemberImports" value="false"/>
</module>
        Checks that there are no static import statements.
Rationale: Importing static members can lead to naming conflicts between class' members. It may lead to poor code readability since it may no longer be clear what class a member resides in (without looking at the import statement).
| name | description | type | default value | 
|---|---|---|---|
| excludes | 
              Allows for certain classes via a star notation to be
              excluded such as java.lang.Math.* or specific static
              members to be excluded like java.lang.System.out for a variable or
              java.lang.Math.random for a
              method.
               If you exclude a starred import on a class this automatically excludes each member individually. For example: Excluding java.lang.Math.*. will allow the import of each static member in the Math class individually like java.lang.Math.PI.  | 
            list of strings | empty list | 
An example of how to configure the check so that the java.lang.System.out member and all members from java.lang.Math are allowed:
         <module name="AvoidStaticImport">
           <property name="excludes" value="java.lang.System.out,java.lang.Math.*"/>
         </module>
        Checks for imports from a set of illegal packages. By default, the check rejects all sun.* packages since programs that contain direct calls to the sun.* packages are not 100% Pure Java. To reject other packages, set property illegalPkgs to a list of the illegal packages.
| name | description | type | default value | 
|---|---|---|---|
| illegalPkgs | packages to reject | list of strings | sun | 
To configure the check:
<module name="IllegalImport"/>
        To configure the check so that it rejects packages java.io.* and java.sql.*:
<module name="IllegalImport">
    <property name="illegalPkgs" value="java.io, java.sql"/>
</module>
        Checks for redundant import statements. An import statement is considered redundant if:
Checks for unused import statements. Checkstyle uses a simple but very reliable algorithm to report on unused import statements. An import statement is considered unused if:
The main limitation of this check is handling the case where an imported type has the same name as a declaration, such as a member variable.
For example, in the following case the import java.awt.Component will not be flagged as unused:
import java.awt.Component;
class FooBar {
    private Object Component; // IMHO bad practise
    ...
}
        | name | description | type | default value | 
|---|---|---|---|
| processJavadoc | whether to process Javadoc | boolean | false | 
Checks the ordering/grouping of imports. Features are:
| name | description | type | default value | 
|---|---|---|---|
| option | policy on the relative order between regular imports and static imports | import order | under | 
| groups | list of imports groups (every group identified either by a common prefix string, or by a regular expression enclosed in forward slashes (e.g. /regexp/) | list of strings | empty list | 
| ordered | whether imports within group should be sorted | Boolean | true | 
| separated | whether imports groups should be separated by, at least, one blank line | Boolean | false | 
| caseSensitive | whether string comparision should be case sensitive or not | Boolean | true | 
To configure the check so that it requires that:
<module name="ImportOrder">
    <property name="groups" value="/^javax?\./,org"/>
    <property name="ordered" value="true"/>
    <property name="separated" value="true"/>
    <property name="option" value="above"/>
</module>
        Controls what can be imported in each package. Useful for ensuring that application layering rules are not violated, especially on large projects.
The DTD for a import control XML document is at http://www.puppycrawl.com/dtds/import_control_1_1.dtd. It contains documentation on each of the elements and attributes.
The check validates a XML document when it loads the document. To validate against the above DTD, include the following document type declaration in your XML document:
<!DOCTYPE import-control PUBLIC
    "-//Puppy Crawl//DTD Import Control 1.1//EN"
    "http://www.puppycrawl.com/dtds/import_control_1_1.dtd">
        | name | description | type | default value | 
|---|---|---|---|
| file | name of the file containing the import control configuration. | string | null | 
| url | url of the file containing the import control configuration. | string | null | 
To configure the check using a import control file called "import-control.xml", then have the following:
<module name="ImportControl">
    <property name="file" value="import-control.xml"/>
</module>
        In the example below, all classes beginning with an I in the package java.awt are allowed. In the package java.io only the classes File and InputStream are allowed.
<import-control pkg="com.puppycrawl.tools.checkstyle">
    <allow class="java\.awt\.I.*" regex="true"/>
    <allow class="java\.io\.(File|InputStream)" local-only="true"
        regex="true"/>
</import-control>
        For an example import control file, look at the file called import-control.xml which is part of the Checkstyle distribution.