Checkstyle CustomImportOrder 超过 3 个可定义组?

Pet*_* L. 5 checkstyle

我公司的Java进口秩序标准将需要超过三个定义的组,我在checkstle,这是见STANDARD_JAVA_PACKAGETHIRD_PARTY_PACKAGESPECIAL_IMPORTS。我的问题有两个部分:

  1. 有没有办法定义更多的自定义正则表达式,或者直接在 customImportOrderRules 的 VALUE 中使用正则表达式?

  2. 我可以这样做吗,因为 com.our_company 应该在所有其他 com. 进口。

导入规则大约是

  1. 静态导入
  2. 爪哇.*
  3. javax.*
  4. com.* 除了我们公司
  5. 没什么。*
  6. 组织*
  7. pthing.*
  8. com.mycompany.*
  9. 还要别的吗

由于我们还在组之间强制使用空行,因此我无法将 5、6 和 7 合二为一并依赖排序顺序来保持整洁。最坏的情况是我们已经在 Intellij 中定义了它,并且只需要记住每次都自动订购导入。

小智 1

回答您的问题:

  1. 根据这张票,似乎无法仅使用CustomImportOrder来实现您所需要的。相反,您应该使用ImportOrder,完整示例如下。
  2. 可以使用ImportOrder

这应该适用于您的情况:

<module name="ImportOrder">
    <property name="option" value="top"/>
    <property name="groups" value="/^java\./,javax,/^com\.(?!mycompany)/,nthing.org,pthing,com.mycompany"/>
    <property name="ordered" value="true"/>
    <property name="separated" value="true"/>
    <property name="separatedStaticGroups" value="true"/>
    <property name="sortStaticImportsAlphabetically" value="true"/>
</module>
Run Code Online (Sandbox Code Playgroud)

小澄清。该属性内部groups有两组/^com\.(?!mycompany)/和,第一个组是使用负向前查找com.mycompany的正则表达式,第二个组只是导入的公共前缀字符串。