public class ImportOrderCheck extends AbstractOptionCheck<ImportOrderOption>
ImportOrderOption
Properties:
name | Description | type | default value |
---|---|---|---|
option | policy on the relative order between regular imports and static imports | ImportOrderOption | 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 comparison should be case sensitive or not. Case sensitive sorting is in ASCII sort order | Boolean | true |
sortStaticImportsAlphabetically | whether static imports grouped by top or bottom option are sorted alphabetically or not | Boolean | false |
Example:
To configure the check so that it matches default Eclipse formatter configuration (tested on Kepler, Luna and Mars):
<module name="ImportOrder"> <property name="groups" value="/^javax?\./,org"/> <property name="ordered" value="true"/> <property name="separated" value="true"/> <property name="option" value="above"/> <property name="sortStaticImportsAlphabetically" value="true"/> </module>
To configure the check so that it matches default IntelliJ IDEA formatter configuration (tested on v14):
Note: "separated" option is disabled because IDEA default has blank line between "java" and static imports, and no blank line between "javax" and "java"
<module name="ImportOrder"> <property name="groups" value="*,javax,java"/> <property name="ordered" value="true"/> <property name="separated" value="false"/> <property name="option" value="bottom"/> <property name="sortStaticImportsAlphabetically" value="true"/> </module>
To configure the check so that it matches default NetBeans formatter configuration (tested on v8):
<module name="ImportOrder"> <property name="option" value="inflow"/> </module>
Group descriptions enclosed in slashes are interpreted as regular expressions. If multiple groups match, the one matching a longer substring of the imported name will take precedence, with ties broken first in favor of earlier matches and finally in favor of the first matching group.
There is always a wildcard group to which everything not in a named group
belongs. If an import does not match a named group, the group belongs to
this wildcard group. The wildcard group position can be specified using the
*
character.
Check also has on option making it more flexible:
sortStaticImportsAlphabetically - sets whether static imports grouped by
top or bottom option should be sorted alphabetically or
not, default value is false. It is applied to static imports grouped
with top or bottom options.
This option is helping in reconciling of this Check and other tools like
Eclipse's Organize Imports feature.
To configure the Check allows static imports grouped to the top being sorted alphabetically:
import static java.lang.Math.abs;
import static org.abego.treelayout.Configuration.AlignmentInLevel; // OK, alphabetical order
import org.abego.*;
import java.util.Set;
public class SomeClass { ... }
Modifier and Type | Field and Description |
---|---|
static String |
MSG_ORDERING
A key is pointing to the warning message text in "messages.properties"
file.
|
static String |
MSG_SEPARATION
A key is pointing to the warning message text in "messages.properties"
file.
|
SEMICOLON
Constructor and Description |
---|
ImportOrderCheck()
Groups static imports under each group.
|
Modifier and Type | Method and Description |
---|---|
void |
beginTree(DetailAST rootAST)
Called before the starting to process a tree.
|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
void |
setCaseSensitive(boolean caseSensitive)
Sets whether string comparison should be case sensitive or not.
|
void |
setGroups(String... packageGroups)
Sets the list of package groups and the order they should occur in the
file.
|
void |
setOrdered(boolean ordered)
Sets whether or not imports should be ordered within any one group of
imports.
|
void |
setSeparated(boolean separated)
Sets whether or not groups of imports must be separated from one another
by at least one blank line.
|
void |
setSortStaticImportsAlphabetically(boolean sortAlphabetically)
Sets whether static imports (when grouped using 'top' and 'bottom' option)
are sorted alphabetically or according to the package groupings.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
getAbstractOption, setOption
destroy, finishTree, getClassLoader, getFileContents, getLine, getLines, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, setClassLoader, setFileContents, setMessages, setTabWidth, setTokens
getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, log, setId, setSeverity
configure, contextualize, finishLocalSetup, getConfiguration, setupChild
public static final String MSG_SEPARATION
public static final String MSG_ORDERING
public ImportOrderCheck()
public void setGroups(String... packageGroups)
packageGroups
- a comma-separated list of package names/prefixes.public void setOrdered(boolean ordered)
ordered
- whether lexicographic ordering of imports within a group
required or not.public void setSeparated(boolean separated)
separated
- whether groups should be separated by oen blank line.public void setCaseSensitive(boolean caseSensitive)
caseSensitive
- whether string comparison should be case sensitive.public void setSortStaticImportsAlphabetically(boolean sortAlphabetically)
sortAlphabetically
- true or false.public int[] getDefaultTokens()
Check
getDefaultTokens
in class Check
TokenTypes
public int[] getAcceptableTokens()
Check
getAcceptableTokens
in class Check
TokenTypes
public int[] getRequiredTokens()
Check
getRequiredTokens
in class Check
TokenTypes
public void beginTree(DetailAST rootAST)
Check
public void visitToken(DetailAST ast)
Check
visitToken
in class Check
ast
- the token to processCopyright © 2001–2015. All rights reserved.