# Checks for imports

## AvoidStarImport

#### Description

Checks that there are no import statements that use the * notation.

Rationale: Importing all classes from a package leads to tight coupling between packages and might lead to problems when a new version of a library introduces name clashes.

#### Properties

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

#### Example

An example how to configure the check so that star imports from java.io and java.net are allowed:

    <module name="AvoidStarImport">
       <property name="excludes" value="java.io,java.net"/>
    </module>

#### Package

com.puppycrawl.tools.checkstyle.checks.imports

#### Parent Module

TreeWalker

## IllegalImport

#### Description

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.

#### Properties

name | description | type | default value
--- | --- | --- | ---
illegalPkgs | packages to reject | list of strings | sun

#### Examples

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>

#### Package

com.puppycrawl.tools.checkstyle.checks.imports

#### Parent Module

TreeWalker

## RedundantImport

#### Description

Checks for redundant import statements. An import statement is considered redundant if:

- It is a duplicate of another import. This is, when a class is imported more than once.
- The class imported is from the java.lang package, e.g. importing java.lang.String.
- The class imported is from the same package.

#### Example

To configure the check:

    <module name="RedundantImport"/>

#### Package

com.puppycrawl.tools.checkstyle.checks.imports

#### Parent Module

TreeWalker

## UnusedImports

#### Description

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:

- It is not referenced in the file. The algorithm does not support wild-card imports like import java.io.*;. Most IDE's provide very sophisticated checks for imports that handle wild-card imports.
- It is a duplicate of another import. This is when a class is imported more than once.
- The class imported is from the java.lang package. For example importing java.lang.String.
- The class imported is from the same package.

#### Example

To configure the check:

    <module name="UnusedImports"/>

#### Package

com.puppycrawl.tools.checkstyle.checks.imports

#### Parent Module

TreeWalker

## ImportOrder

#### Description

Checks the ordering/grouping of imports. Ensures that groups of imports come in a specific order (e.g., java. comes first, javax. comes first, then everything else) and imports within each group are in lexicographic order.

#### Properties

name | description | type | default value
--- | --- | --- | ---
groups | list of imports groups (every group identified by string it's started) | 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 strings comprision should be case sensitive or not | Boolean | true

#### Example

To configure the check so that it requires "java" packages first, than "javax" and than all other imports, imports will be sorted in the groups and groups are separated by, at least, on blank line:

          <module name="ImportOrder">
            <property name="groups" value="java,javax"/>
            <property name="ordered" value="true"/>
            <property name="separated" value="true"/>
          </module>

#### Package

com.puppycrawl.tools.checkstyle.checks.imports

#### Parent Module

TreeWalker

Back to the Checkstyle Home Page

Copyright © 2002-2003 Oliver Burn. All rights Reserved.