diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java index a69af652efa..37bbda25907 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java @@ -169,6 +169,183 @@ * * *
+ * To configure the check : + *
+ *+ * <module name="CustomImportOrder"/> + *+ *
+ * Example: + *
+ *+ * package com.company; + * import org.apache.commons.io.FileUtils; // OK + * import static java.util.*; // OK + * import java.time.*; // OK + * import static java.io.*; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + *+ *
+ * To configure the check so that it checks in the order + * (static imports,standard java packages,third party package): + *
+ *+ * <module name="CustomImportOrder"> + * <property name="customImportOrderRules" + * value="STATIC###STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE"/> + * </module> + *+ *
+ * Example: + *
+ *+ * package com.company; + * + * import static java.util.*; // OK + * + * import java.time.*; // OK + * import javax.net.*; // OK + * import static java.io.*; // violation as static imports should be in top + * + * import org.apache.commons.io.FileUtils; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + *+ *
+ * To configure the check such that only java packages are included in standard java packages + *
+ *+ * <module name="CustomImportOrder"> + * <property name="customImportOrderRules" + * value="STATIC###STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE"/> + * <property name="standardPackageRegExp" value="^java\."/> + * </module> + *+ *
+ * Example: + *
+ *+ * package com.company; + * + * import static java.util.*; // OK + * import static java.io.*; // OK + * + * import java.time.*; // OK + * import javax.net.*; // violation as it is not included in standard java package group. + * + * import org.apache.commons.io.FileUtils; // violation + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + *+ *
+ * To configure the check to include only "com" packages as third party group imports: + *
+ *+ * <module name="CustomImportOrder"> + * <property name="customImportOrderRules" + * value="STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE"/> + * <property name="thirdPartyPackageRegExp" value="^com\."/> + * </module> + *+ *
+ * Example: + *
+ *+ * package com.company; + * + * import static java.util.*; // OK + * import static java.io.*; // OK + * + * import java.time.*; // OK + * import javax.net.*; // OK + * + * import org.apache.commons.io.FileUtils; // violation(should be in end) + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // violation + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + *+ *
+ * To configure the check to force some packages in special import group: + *
+ *+ * <module name="CustomImportOrder"> + * <property name="customImportOrderRules" + * value="STATIC###SPECIAL_IMPORTS###STANDARD_JAVA_PACKAGE"/> + * <property name="specialImportsRegExp" value="^org\."/> + * </module> + *+ *
+ * Example: + *
+ *+ * package com.company; + * + * import static java.util.*; // OK + * import static java.io.*; // OK + * + * import org.json.JSONObject; // OK + * + * import java.time.*; // OK + * import javax.net.*; // OK + * + * import org.apache.commons.io.FileUtils; // violation + *+ *
+ * To configure the check such that empty line separator between two groups is enabled: + *
+ *+ * <module name="CustomImportOrder"> + * <property name="customImportOrderRules" + * value="STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE"/> + * <property name="specialImportsRegExp" value="^org\."/> + * <property name="thirdPartyPackageRegExp" value="^com\."/> + * <property name="separateLineBetweenGroups" value="true"/> + * </module> + *+ *
+ * Example: + *
+ *+ * package com.company; + * + * import static java.util.*; // OK + * import static java.io.*; // OK + * + * import java.time.*; // OK + * import javax.net.*; // OK + * import org.apache.commons.io.FileUtils; // violation + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // violation + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + *+ *
+ * To configure the check such that import groups are forced to be sorted alphabetically: + *
+ *+ * <module name="CustomImportOrder"> + * <property name="customImportOrderRules" + * value="STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE"/> + * <property name="specialImportsRegExp" value="^org\."/> + * <property name="thirdPartyPackageRegExp" value="^com\."/> + * <property name="separateLineBetweenGroups" value="false"/> + * <property name="sortImportsInGroupAlphabetically" value="true"/> + * </module> + *+ *
+ * Example: + *
+ *+ * package com.company; + * + * import static java.util.*; // OK + * import static java.io.*; // Violation since it should come before"java.util" + * + * import java.time.*; // OK + * import javax.net.*; // OK + * import org.apache.commons.io.FileUtils; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + *+ *
* To configure the check so that it matches default Eclipse formatter configuration * (tested on Kepler and Luna releases): *
@@ -210,6 +387,22 @@ * </module> * *+ * Example: + *
+ *+ * package com.company; + * + * import static java.util.*; // OK + * import static java.io.*; // Violation since it should come before"java.util" + * + * import java.time.*; // OK + * import javax.net.*; // OK + * import org.apache.commons.io.FileUtils; // Violation should be separated by space + * + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + *+ *
* To configure the check so that it matches default Eclipse formatter configuration * (tested on Mars release): *
@@ -239,6 +432,23 @@ * </module> * *+ * Example: + *
+ *+ * package com.company; + * + * import static java.io.*; // OK + * import static java.util.*; // OK + * + * import java.time.*; // OK + * import javax.net.*; // OK + * + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // Violation + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // Violation + * + * import org.apache.commons.io.FileUtils; + *+ *
* To configure the check so that it matches default IntelliJ IDEA formatter configuration * (tested on v14): *
@@ -271,6 +481,25 @@ * </module> * *+ * Example: + *
+ *+ * package com.company; + * + * import static java.io.*; // OK + * import static java.util.*; // OK + * + * import java.time.*; // violation should be in standard package group + * // below special import + * + * import javax.net.*; // Violation should be in special import group + * + * import org.apache.commons.io.FileUtils; // Violation should be in + * // THIRD PARTY PACKAGE GROUP + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // Violation + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // Violation + *+ *
* To configure the check so that it matches default NetBeans formatter configuration * (tested on v8): *
@@ -286,6 +515,21 @@ * <module name="CustomImportOrder"/> * *+ * Example: + *
+ *+ * package com.company; + * + * import static java.io.*; // OK + * import static java.util.*; // OK + * import java.time.*; // OK + * import javax.net.*; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + * + * import org.apache.commons.io.FileUtils; // should not be separated by line + *+ *
* To set RegExps for THIRD_PARTY_PACKAGE and STANDARD_JAVA_PACKAGE groups use * thirdPartyPackageRegExp and standardPackageRegExp options. *
@@ -298,6 +542,21 @@ * </module> * *+ * Example: + *
+ *+ * package com.company; + * + * import static java.io.*; // OK + * import static java.util.*; // OK + * import java.time.*; // violation + * import javax.net.*; // violation + * + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + * import org.apache.commons.io.FileUtils; // OK + *+ *
* Also, this check can be configured to force empty line separator between * import groups. For example. *
@@ -307,6 +566,20 @@ * </module> * *+ * Example: + *
+ *+ * package com.company; + * + * import static java.io.*; // OK + * import static java.util.*; // OK + * import java.time.*; // OK + * import javax.net.*; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.CustomImportOrderCheck; // OK + * import com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck; // OK + * import org.apache.commons.io.FileUtils; // OK + *+ *
* It is possible to enforce
* ASCII sort order
* of imports in groups using the following configuration:
diff --git a/src/xdocs/config_imports.xml b/src/xdocs/config_imports.xml
index e7244c80237..765a1128f5b 100644
--- a/src/xdocs/config_imports.xml
+++ b/src/xdocs/config_imports.xml
@@ -486,6 +486,183 @@ import com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck;
+ To configure the check :
+
+ Example:
+
+ To configure the check so that it checks in the order
+ (static imports,standard java packages,third party package):
+
+ Example:
+
+ To configure the check such that only java packages are included in standard java packages
+
+ Example:
+
+ To configure the check to include only "com" packages as third party group imports:
+
+ Example:
+
+ To configure the check to force some packages in special import group:
+
+ Example:
+
+ To configure the check such that empty line separator between two groups is enabled:
+
+ Example:
+
+ To configure the check such that import groups are forced to be sorted alphabetically:
+
+ Example:
+ To configure the check so that it matches default Eclipse formatter configuration
(tested on Kepler and Luna releases):
+ Example:
+ To configure the check so that it matches default Eclipse formatter configuration
(tested on Mars release):
+ Example:
+ To configure the check so that it matches default IntelliJ IDEA formatter configuration
(tested on v14):
+ Example:
+ To configure the check so that it matches default NetBeans formatter configuration
(tested on v8):
+ Example:
+
To set RegExps for THIRD_PARTY_PACKAGE and STANDARD_JAVA_PACKAGE groups use
thirdPartyPackageRegExp and standardPackageRegExp options.
@@ -582,6 +822,21 @@ import com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck;
<property name="thirdPartyPackageRegExp" value="^(com|org)\."/>
<property name="standardPackageRegExp" value="^(java|javax)\."/>
</module>
+
+
+ Example:
+
Also, this check can be configured to force empty line separator between
@@ -591,6 +846,20 @@ import com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck;
<module name="CustomImportOrder">
<property name="separateLineBetweenGroups" value="true"/>
</module>
+
+
+ Example:
+
@@ -511,7 +688,22 @@ import com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck;
<property name="separateLineBetweenGroups" value="true"/>
</module>
+
@@ -531,7 +723,23 @@ import com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck;
<property name="separateLineBetweenGroups" value="true"/>
</module>
+
@@ -558,7 +766,25 @@ import com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck;
<property name="separateLineBetweenGroups" value="false"/>
</module>
+
@@ -570,7 +796,21 @@ import com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck;
+