Rog*_*ger 5 java intellij-idea checkstyle maven
我正在尝试使用Checkstyle(通过maven-checkstyle-plugin)来使用Checkstyle CustomImportOrder模块检查IntelliJ导入.尽管根据IntelliJ的默认规则订购了我的导入,但Checkstyle仍然说导入顺序错误.
这是我的导入(根据IntelliJ规则(ctrl + o)排序:
import org.codehaus.jackson.JsonNode;
import javax.sql.rowset.serial.SQLOutputImpl;
import java.util.ArrayList;
import java.util.List;
Run Code Online (Sandbox Code Playgroud)
以下是Checkstyle的警告信息:
[WARNING] src\main\java\com\example\hej\EnKlass.java[5] (imports) CustomImportOrder: Import statement is in the wrong order. Should be in the 'SPECIAL_IMPORTS' group.
[WARNING] src\main\java\com\example\hej\EnKlass.java[6] (imports) CustomImportOrder: Import statement is in the wrong order. Should be in the 'STANDARD_JAVA_PACKAGE' group.
[WARNING] src\main\java\com\example\hej\EnKlass.java[7] (imports) CustomImportOrder: Import statement is in the wrong order. Should be in the 'STANDARD_JAVA_PACKAGE' group.
Run Code Online (Sandbox Code Playgroud)
这是我的checkstyle.xml CustomImportOrder规则(由Checkstyle网站推荐用于IntelliJ):
<module name="CustomImportOrder">
<property name="customImportOrderRules" value="THIRD_PARTY_PACKAGE###SPECIAL_IMPORTS###STANDARD_JAVA_PACKAGE###STATIC"/>
<property name="specialImportsRegExp" value="^javax\."/>
<property name="standardPackageRegExp" value="^java\."/>
<property name="sortImportsInGroupAlphabetically" value="true"/>
<property name="separateLineBetweenGroups" value="false"/>
</module>
Run Code Online (Sandbox Code Playgroud)
这可能是什么问题?我一直试图改变规则,没有运气.我也试图删除/操纵正则表达式没有运气.
IntelliJ中的默认格式如下所示:
all other imports
<blank line>
javax.* in alphabetical order
java.* in alphabetical order
<blank line>
static imports in alphabetical order
Run Code Online (Sandbox Code Playgroud)
现在,不可能在中间没有空行的情况下进行排序java和javax分开,这就是您违规的原因.
我在GitHub上提出了解决问题的问题,它需要更改Checkstyle代码.
作为一种解决方法,您可以在IntelliJ IDEA配置之间javax和之间添加空白行java,然后应该很容易调整Checkstyle以使用它.
小智 5
不要分开java并javax分成不同的组 - 只需放在包裹javax前面即可。java
检查样式.xml:
...
<module name="CustomImportOrder">
<property name="customImportOrderRules" value="THIRD_PARTY_PACKAGE###SPECIAL_IMPORTS###STANDARD_JAVA_PACKAGE###STATIC"/>
<property name="sortImportsInGroupAlphabetically" value="true"/>
<property name="standardPackageRegExp" value="^(java|javax)\."/>
<property name="separateLineBetweenGroups" value="true"/>
</module>
...
Run Code Online (Sandbox Code Playgroud)
checkstyleSuppressions.xml
...
<!-- Let javax.* stand before java.* - that's default Idea settings -->
<suppress checks="CustomImportOrder"
message="Wrong lexicographical order for 'java\.[^']+' import\. Should be before 'javax\.[^']+'\."/>
...
Run Code Online (Sandbox Code Playgroud)
standardPackageRegExp您还可以省略与默认值(以及separateLineBetweenGroups今天的)匹配的属性- 请检查实际文档。