当前位置: 首页 > 知识库问答 >
问题:

如何实施一致的Java代码格式?

咸晨
2023-03-14
    null
spotless {
  java {
    toggleOffOn()
    eclipse().configFile("${project.rootDir}/tools/eclipse-java-formatter.xml")
    indentWithSpaces()
    removeUnusedImports()
  }
}

这种方法满足了除2.2之外的所有要求,即IntelliJ生成的任何代码在符合格式化规则之前必须重新格式化。另一个问题是,当代码重新格式化时,导入似乎被任意重新排序。这会产生大量虚假的更改,从而使请求更难检查。

是否有其他方法(例如CheckStyle)没有这些缺点?

共有1个答案

蔺霄
2023-03-14

您可以使用Google Java格式,该格式具有用于上述IDE的插件(IntelliJ IDEA、Eclipse),它提供了与Maven、Gradle或SBT等工具的集成,并提供了作为提交前钩子或在使用Github操作将代码推送到Github时运行格式化程序的方法。

在他们的自述文件中,他们还提到了导入问题以及如何为IntelliJ IDEA解决这个问题,并提供了更多的见解,例如:如何在Spotless Gradle插件上处理这个问题,在使用Maven Spotless插件时,或者在Github操作中处理这个问题。

对于您的具体情况来说,一个缺点可能是该工具强制执行Google Java style guide,正如Oracle Java Magazine中所描述的,Oracle Java团队称赞并推荐了Google Java style guide。它还提供了使用AOSP代码样式的选项。

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 1.8.161、Maven 3.3.9、SpringBoot 2.0.1、工具Jenkins和GitLab构建的项目。我想使用google java格式作为整个团队的标准。 我的调查/解决方案: 在调查过程中,我找到了解决方案,这听起来很简单。只需更新pom文件: 而且很有效。如果我运行编译、打包、验证、安装或部署Maven lifecycle,代码就会格式化。

  • 问题内容: 我正在使用FreeMarker生成Java代码,但是由于大多数都是动态生成的,因此很难控制代码的形成。 我想使代码格式正确。有谁知道lib或类似Java代码的漂亮打印机? 问题答案: 我想我会像这个人一样使用Eclipse的CodeFormatter:http ://ssscripting.wordpress.com/2009/06/10/how-to-use-the-eclipse-

  • 问题内容: Try-catch旨在帮助处理异常。这意味着它将以某种方式帮助我们的系统更强大:尝试从意外事件中恢复。 我们怀疑在执行和指令(发送消息)时可能会发生某些事情,因此将其包含在try中。如果发生了几乎不可预料的事情,我们可以采取一些措施:编写渔获物。我不认为我们打电话来只是记录异常。我认为catch块旨在为我们提供从错误中恢复的机会。 现在,假设我们从错误中恢复了,因为我们可以修复错误所在

  • 问题内容: 我有一些Java代码,其中SQL语句编写为Java字符串(请不要使用OR / M烈火,嵌入式SQL就是它-不是我的决定)。 为了简化维护,我将SQL语句从语义上分成了几行代码,并由几行代码组成。因此,而不是像这样: 我有类似的东西: 这种样式使SQL更易于阅读和维护(IMHO),尤其是对于较大的查询。例如,我可以将编辑器置于“覆盖”模式并相当容易地就地修改文本。 请注意,此问题超出了S

  • 在Perl中,使用Moo,可以围绕sub实现sub,它将围绕类中的其他方法。 如何在Raku中实现这种行为,最好使用角色?

  • 我正在尝试实现身份验证 可以请求任何微服务的API网关。 用户微服务-我存储所有用户的地方。实现在此微服务中对用户进行身份验证。按应有的方式工作,登录路由返回我用于在此微服务中对用户进行身份验证的令牌。 其他5个微服务,未经任何身份验证或授权。 问题是:使用身份验证的正确方法是什么