Ant*_*gos 28 java intellij-idea gradle
我正在寻找一种方法来强制开发人员使用相同的 Java 代码格式规则。我的要求是:
检查代码格式是否正确的任务。如果提交格式不正确的代码,这将用于 CI 导致构建失败
修复格式不正确的代码的任务(很好)
目前我正在使用具有以下配置的Spotless
spotless {
  java {
    toggleOffOn()
    eclipse().configFile("${project.rootDir}/tools/eclipse-java-formatter.xml")
    indentWithSpaces()
    removeUnusedImports()
  }
}
对于 IntelliJ 集成,我安装了Eclipse Code Formatter 插件并将其配置为使用与 Spotless 相同的规则。
除了 2.2 之外,这种方法满足上述所有要求,即 IntelliJ 生成的任何代码在符合格式规则之前都必须重新格式化。另一个问题是,当重新格式化代码时,导入似乎被任意重新排序。这会产生大量虚假更改,从而使拉取请求更难以审查。
是否有另一种方法(例如 CheckStyle)不受这些缺点的影响?
您可以使用Google Java Format,它具有上述 IDE(IntelliJ IDEA、Eclipse)的插件,它提供了与 Maven、Gradle 或 SBT 等工具的集成,并提供了将格式化程序作为预提交钩子或当使用 Github 操作将代码推送到 Github。
在他们的自述文件中,他们还提到了导入问题以及如何为 IntelliJ IDEA 修复它,并提供了更多见解,例如:关于如何在Spotless Gradle 插件上处理它,当使用Maven Spotless 插件时,或对于Github 操作。
您的特定情况的一个缺点可能是该工具强制执行Google Java 样式指南,如 Oracle Java 杂志中所述,该指南受到 Oracle Java 团队的赞扬和推荐。它还提供了使用AOSP 代码样式的选项。
下面是一尘不染的Gradle 配置的片段,考虑到导入排序:
spotless {
    java {
        importOrder() // standard import order
        importOrder('java', 'javax', 'com.acme', '') // or importOrderFile
        // You probably want an empty string at the end - all of the
        // imports you didn't specify explicitly will go there.
        removeUnusedImports()
        googleJavaFormat() // has its own section below
        eclipse()          // has its own section below
        prettier()         // has its own section below
        clangFormat()      // has its own section below
        licenseHeader '/* (C) $YEAR */' // or licenseHeaderFile
    }
}
| 归档时间: | 
 | 
| 查看次数: | 2311 次 | 
| 最近记录: |