gpt4 book ai didi

java - 如何实现一致的 Java 代码格式?

转载 作者:行者123 更新时间:2023-12-03 07:30:56 24 4
gpt4 key购买 nike

我正在寻找一种方法来强制开发人员使用相同的 Java 代码格式规则。我的要求是:

  • Gradle集成
  • 检查代码格式是否正确的任务。如果提交格式不正确的代码,这将用于 CI 导致构建失败
  • 修复格式不正确的代码的任务(很好)

  • IntelliJ 集成
  • 可以通过“重新格式化代码”操作在 IDE 中修复格式不正确的代码
  • IDE 生成的代码(例如 getter/setter 生成)符合规则

  • 支持OpenJDK/Oracle Java 格式规则

  • 目前我正在使用 Spotless使用以下配置
    spotless {
    java {
    toggleOffOn()
    eclipse().configFile("${project.rootDir}/tools/eclipse-java-formatter.xml")
    indentWithSpaces()
    removeUnusedImports()
    }
    }
    对于 IntelliJ 集成,我安装了 Eclipse Code Formatter pluginconfigured it使用与 Spotless 相同的规则。
    除了 2.2 之外,此方法满足上述所有要求,即 IntelliJ 生成的任何代码在符合格式规则之前都必须重新格式化。另一个问题是,当重新格式化代码时,导入似乎被任意重新排序。这会产生大量虚假更改,从而使拉取请求更难以审查。
    是否有另一种方法(例如 CheckStyle)不受这些缺点的影响?

    最佳答案

    您可以使用 Google Java Format ,它具有上述 IDE 的插件( IntelliJ IDEAEclipse ),它提供了与 Maven、Gradle 或 SBT 等工具的集成,并提供了运行格式化程序的方法 pre-commit hookwhen pushing the code to Github with Github actions .
    在他们的自述文件中,他们还提到了导入问题以及如何为 IntelliJ IDEA 修复它,并提供了更多见解,例如:如何在 Spotless Gradle plugin 上处理它。 , 使用 Maven Spotless plugin 时,或为 Github actions .
    您的特定情况的一个缺点可能是该工具强制执行 Google Java style guide , 其中 was praised and recommended by the Oracle Java team as described in the Oracle Java magazine .它还提供了使用 AOSP code style 的选项。 .
    以下是 spotless 的片段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
    }
    }

    关于java - 如何实现一致的 Java 代码格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64927439/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com