【发布时间】:2021-03-03 17:59:07
【问题描述】:
我正在寻找一种方法来强制开发人员使用相同的 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 plugin 和 configured it 以使用与 Spotless 相同的规则。
此方法满足上述所有要求,但 2.2 除外,即 IntelliJ 生成的任何代码必须在符合格式化规则之前重新格式化。另一个问题是,在重新格式化代码时,导入似乎被任意重新排序。这会产生大量虚假更改,从而使拉取请求更难审查。
是否有其他方法(例如 CheckStyle)不存在这些缺点?
【问题讨论】:
-
对于
Intellij,有一个Save Actions插件可以组织导入并在保存文件时强制执行代码格式。这会有帮助吗? -
@Eugene 不是真的
-
在 IntelliJ 中,您可以将所有规则作为首选项导出到文件中,并要求团队在设置开发环境之前导入这些首选项。这将确保每个人都遵循相同的格式化规则,并且 IntelliJ 也会格式化自动生成的代码。如果有人无法导入 IntelliJ 首选项,您可以使用 Gradle 一尘不染的插件来处理这种情况。如果这可行,我可以详细说明您在此问题中提到的其他问题的解决方案。
-
您能详细说明原因吗?您可以在 intellij 中导入相同的规则,并通过 Save Actions 进行相同的导入。
-
保存操作建议解决了您的 2.2。并且可以与 Intellij 格式化规则一起使用,所以既然你声称你现有的解决方案只违反了 2.2.,那又是什么问题呢?
标签: java gradle intellij-idea