如何让 Checkstyle CustomImportOrder 与 Android Studio 一起正常工作?

Posted

技术标签:

【中文标题】如何让 Checkstyle CustomImportOrder 与 Android Studio 一起正常工作?【英文标题】:How do I get Checkstyle CustomImportOrder to work with Android Studio properly? 【发布时间】:2021-12-27 08:09:24 【问题描述】:

我看到很多 checkstyle 导入顺序违规 当我使用 android Studio 的自动导入或优化导入工具时。

例如:

Wrong lexicographical order for 'coil.Coil' import. Should be before 'java.util.concurrent.TimeUnit'.
Wrong lexicographical order for 'androidx.annotation.Nullable' import. Should be before 'java.util.Collections.emptyList'.
Wrong lexicographical order for 'java.util.Map' import. Should be before 'org.json.JSONObject'.

为什么Android Studio 会自动在java 之后放置coil 而在java 包之前放置org?有没有一种方法可以自定义 Android Studio 行为,或者更好的是,有一个适合 Android Studio 行为的 checkstyle 配置?

【问题讨论】:

【参考方案1】:

您可以在以下位置检查 Android Studio 设置:

Preferences>Editor>Code Style>Java

我的 Android Studio(Arctic Fox 2020.3.1 Patch 3)的默认设置如下:

如您所见,Android Studio 对一些包的处理方式有所不同。这就是为什么导入顺序不是您所期望的。

您可以使用CustomImportOrderspecial

<module name="CustomImportOrder">
  <property name="sortImportsInGroupAlphabetically" value="true"/>
  <property name="separateLineBetweenGroups" value="true"/>
  <property name="customImportOrderRules" value="STATIC###SPECIAL_IMPORTS###STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE"/>
  <property name="specialImportsRegExp" value="^(android|androidx|com|junit|net|org)\."/>
</module>

注意:静态导入可能仍然会遇到同样的问题,但我认为没有选项可以使用 checkstyle 解决此问题。

【讨论】:

以上是关于如何让 Checkstyle CustomImportOrder 与 Android Studio 一起正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何轻松修复 Checkstyle 错误?

让 Checkstyle 自定义规则在 Hudson/Jenkins 中工作

如何配置eclipse的checkstyle和findbugs两个插件

CheckStyle检查规则模板说明

在checkstyle中如何设置

如何在 checkstyle 上配置抑制 ParameterNumber?