public class ImportOrderCheck extends AbstractCheck
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 or comment and aren't separated internally | 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 |
useContainerOrderingForStatic | whether to use container ordering (Eclipse IDE term) for static imports 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 { ... }
AutomaticBean.OutputStreamOptions
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_SEPARATED_IN_GROUP
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.
|
Constructor and Description |
---|
ImportOrderCheck() |
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 |
setOption(String optionStr)
Set the option to enforce.
|
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 |
setUseContainerOrderingForStatic(boolean useContainerOrdering)
Sets whether to use container ordering (Eclipse IDE term) for static imports or not.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
clearMessages, destroy, finishTree, getClassLoader, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setClassLoader, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final String MSG_SEPARATION
public static final String MSG_ORDERING
public static final String MSG_SEPARATED_IN_GROUP
public ImportOrderCheck()
public void setOption(String optionStr)
optionStr
- string to decode option fromIllegalArgumentException
- if unable to decodepublic 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 one 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 void setUseContainerOrderingForStatic(boolean useContainerOrdering)
useContainerOrdering
- whether to use container ordering for static imports or not.public int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public void beginTree(DetailAST rootAST)
AbstractCheck
beginTree
in class AbstractCheck
rootAST
- the root of the treepublic void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processCopyright © 2001–2018. All rights reserved.