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 a776d8a5c..9e65dff46 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 @@ -119,17 +119,25 @@ import com.puppycrawl.tools.checkstyle.Utils; * * *

- * By the option it is possible to force alphabetically sorting. + * It is possible to enforce ASCII sort order + * of imports in groups using the following configuration: *

- * *
- * 
- * <module name="CustomImportOrder">
+ * <module name="CustomImportOrder">
  *    <property name="sortImportsInGroupAlphabetically" value="true"/>
  * </module>
  * 
  * 
- * + *

+ * Example of ASCII order: + *

+ *
+ * import java.awt.Dialog;
+ * import java.awt.Window;
+ * import java.awt.color.ColorSpace;
+ * import java.awt.Frame; // violation here - in ASCII order 'F' should go before 'c',
+ *                        // as all uppercase come before lowercase letters
+ * 
*

* To force checking imports sequence such as: *

@@ -223,7 +231,7 @@ public class CustomImportOrderCheck extends Check /** Force empty line separator between import groups */ private boolean separateLineBetweenGroups = true; - /** Force grouping alphabetically */ + /** Force grouping alphabetically, in ASCII order */ private boolean sortImportsInGroupAlphabetically; /** List of order declaration customizing by user */ @@ -605,7 +613,7 @@ public class CustomImportOrderCheck extends Check } final String import1Token = import1Tokens[i]; final String import2Token = import2Tokens[i]; - result = import1Token.compareToIgnoreCase(import2Token); + result = import1Token.compareTo(import2Token); if (result != 0) { break; } diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java index b9f07b6c1..c1e60c0c2 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java @@ -46,7 +46,6 @@ public class CustomImportOrderCheckTest extends BaseCheckTestSupport checkConfig.addAttribute("sortImportsInGroupAlphabetically", "true"); final String[] expected = { "4: " + getCheckMessage(MSG_LEX, "java.awt.Button.ABORT"), - "7: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), "8: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), "9: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), "10: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), @@ -56,6 +55,8 @@ public class CustomImportOrderCheckTest extends BaseCheckTestSupport "14: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), "15: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), "16: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), + "17: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), + "18: " + getCheckMessage(MSG_ORDER, "STANDARD_JAVA_PACKAGE"), }; verify(checkConfig, getPath("imports" + File.separator @@ -78,10 +79,9 @@ public class CustomImportOrderCheckTest extends BaseCheckTestSupport checkConfig.addAttribute("sortImportsInGroupAlphabetically", "true"); final String[] expected = { "4: " + getCheckMessage(MSG_LEX, "java.awt.Button.ABORT"), - "9: " + getCheckMessage(MSG_LEX, "java.awt.Dialog"), - "13: " + getCheckMessage(MSG_LEX, "java.io.File"), - "15: " + getCheckMessage(MSG_LEX, "java.io.InputStream"), - "20: " + getCheckMessage(MSG_LEX, "com.google.common.collect.*"), + "10: " + getCheckMessage(MSG_LEX, "java.awt.Dialog"), + "15: " + getCheckMessage(MSG_LEX, "java.io.File"), + "22: " + getCheckMessage(MSG_LEX, "com.google.common.collect.*"), }; verify(checkConfig, getPath("imports" + File.separator @@ -104,12 +104,11 @@ public class CustomImportOrderCheckTest extends BaseCheckTestSupport checkConfig.addAttribute("sortImportsInGroupAlphabetically", "true"); final String[] expected = { "4: " + getCheckMessage(MSG_LEX, "java.awt.Button.ABORT"), - "9: " + getCheckMessage(MSG_LEX, "java.awt.Dialog"), - "13: " + getCheckMessage(MSG_LEX, "java.io.File"), - "15: " + getCheckMessage(MSG_LEX, "java.io.InputStream"), - "18: " + getCheckMessage(MSG_ORDER, "SAME_PACKAGE"), - "20: " + getCheckMessage(MSG_NONGROUP_IMPORT), - "21: " + getCheckMessage(MSG_LINE_SEPARATOR, "org.junit.*"), + "10: " + getCheckMessage(MSG_LEX, "java.awt.Dialog"), + "15: " + getCheckMessage(MSG_LEX, "java.io.File"), + "20: " + getCheckMessage(MSG_ORDER, "SAME_PACKAGE"), + "22: " + getCheckMessage(MSG_NONGROUP_IMPORT), + "23: " + getCheckMessage(MSG_LINE_SEPARATOR, "org.junit.*"), }; verify(checkConfig, getPath("imports" + File.separator diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/imports/InputCustomImportOrder.java b/src/test/resources/com/puppycrawl/tools/checkstyle/imports/InputCustomImportOrder.java index 4335bead5..91dc46b96 100644 --- a/src/test/resources/com/puppycrawl/tools/checkstyle/imports/InputCustomImportOrder.java +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/imports/InputCustomImportOrder.java @@ -2,11 +2,13 @@ package com.puppycrawl.tools.checkstyle.imports; import static java.io.File.createTempFile; import static java.awt.Button.ABORT; +import static java.awt.print.Paper.*; import static javax.swing.WindowConstants.*; import java.awt.Button; import java.awt.Frame; import java.awt.Dialog; +import java.awt.color.ColorSpace; import java.awt.event.ActionEvent; import javax.swing.JComponent; import javax.swing.JTable; diff --git a/src/xdocs/config_imports.xml b/src/xdocs/config_imports.xml index 524c6dd1b..394ace4d0 100644 --- a/src/xdocs/config_imports.xml +++ b/src/xdocs/config_imports.xml @@ -698,7 +698,7 @@ public class SomeClass { ... } sortImportsInGroupAlphabetically - Force grouping alphabetically. + Force grouping alphabetically, in ASCII sort order. boolean false @@ -728,13 +728,24 @@ public class SomeClass { ... } </module>

- By the option it is possible to force alphabetically sorting. + It is possible to enforce ASCII sort order + of imports in groups using the following configuration:

<module name="CustomImportOrder"> <property name="sortImportsInGroupAlphabetically" value="true"/> </module> +

+ Example of ASCII order: +

+ +import java.awt.Dialog; +import java.awt.Window; +import java.awt.color.ColorSpace; +import java.awt.Frame; // violation here - in ASCII order 'F' should go before 'c', + // as all uppercase come before lowercase letters +

To force checking imports sequence such as: