Java 项目如何做代码风格的统一管理

2022-07-26 08:06:35 +08:00
 codingbody
Java 项目如何做代码风格的统一管理,我看大多开源项目使用的是 checkstyle 。

我了解 checkstyle 只是可以检查出不符合要求的代码,那么如何快速 format 这些不符合要求的代码呢?

各位在工作中是如何实践的呢?我期望的是可以配合 maven 或 gradle 构建工具达到 check 、format 两个目的。这样方便团队成员更容易遵守规范,通过 IDE 插件的话同步成本比较高。
6258 次点击
所在节点    Java
33 条回复
zhenjiachen
2022-07-26 08:11:08 +08:00
格式化插件我只找到 spring 的 format 插件,但是这个插件代码样式是写死的,只能按照他们的来,不能自定义。
petercui
2022-07-26 08:15:20 +08:00
IDEA 有 Alibaba code guide 和 save action

格式化代码的话,Gradle 和 maven 有插件 spotless
guisheng
2022-07-26 08:16:32 +08:00
不是有 Google 的 check style 文件么 gradle 有插件可以配置,提交代码可以增加 git 强制检查,还有 format
admin7785
2022-07-26 08:17:07 +08:00
提交前 checkstyle ,不符合要求了,不应该是代码 owner 自己修改吗?为什么要自动 format ?
hpu423
2022-07-26 08:25:18 +08:00
不建议搞代码风格管理,最好搞成屎山,被裁的时候还能有点话语权
xaplux
2022-07-26 08:41:05 +08:00
一般公司项目很少强制代码风格吧,统一使用一套 code style 文件就行,更多的是开源项目会强制要求
Dragonphy
2022-07-26 08:46:59 +08:00
IDEA 自带的就够了,前端才会严格限制代码风格,不然代码乱飞
Niphor
2022-07-26 08:50:20 +08:00
java 这方面实在有点弱,用各种插件,还不如直接把 idea 的配置放项目里...
小公司就不要搞了,没人会来遵守的
dk7952638
2022-07-26 09:00:51 +08:00
@hpu423 企业级理解
zr8657
2022-07-26 09:01:42 +08:00
你是技术经理 /项目经理吗,不是的话别皮,老老实实写好自己那份代码
VeryZero
2022-07-26 09:16:31 +08:00
查出来让他自己改啊,自动 Format 不怕形成依赖吗?对团队提升意义不大吧
cedoo22
2022-07-26 09:29:47 +08:00
@hpu423 之前遇到一个老 6 , 代码离开他 3 天就各种异常, 当时我们还嘲笑他技术, 到现在才知道 差距。
excitedXXX
2022-07-26 09:39:11 +08:00
统一一下 code style 防止代码冲突就可以了= =
TaylorBu
2022-07-26 09:39:12 +08:00
阿里的 P3C-PMD ,可以集成到 Gitlab 上,每次代码提交检查规范
MarioLuo
2022-07-26 09:55:29 +08:00
在公司内部写了一个 IDEA 插件,定义了代码风格文件,安装插件后会自动设置代码风格,并且在代码提交时候,每次默认勾选 `Code format` `Optimize import`,
LeegoYih
2022-07-26 10:26:17 +08:00
搭一个 sonar 扫描代码呗,配置一下规范,分数低于 90 分不允许发布
zhenrong
2022-07-26 10:32:13 +08:00
Sonar + PMD 自动扫描,Gerrit 做 code review 不通过没法 MR 保证治的服服帖帖。问题在于开发团队的整体素质的跟得上吗,愿意花多少时间和多大代价绣花。
odirus
2022-07-26 10:35:53 +08:00
刚好做过类似的事情,我们通过 Checkstyle 来实现格式检查,但如果格式不正确怎么快速格式化呢?因为我们这边基本用的 IDEA 社区版,经过调研最终我用的 editorconfig 配置文件来实现,下面细说:
1 )将统一的 IDEA 风格导出到 editorconfig 配置里面去(不要怀疑,可以这样玩的,是以 "ij_java" 开头的配置);
2 )然后想办法写入到大家的项目目录下,当打开项目时 IDEA 会优先使用当前项目 editorconfig 里面的配置,IDEA 下面也会提示 "one or more code style options are overriden by By EditorConfig",这样就生效了;
3 )那怎么让这个配置文件写入到大家的项目目录下呢,我们开发了一个 IDEA 插件,只要大家安装了,启动项目时一旦检测到公司的项目就自动写入配置文件或者更新配置文件;
综上,需要用到两款插件( Checkstyle + 自研)、editorconfig 就可以实现了,如果喜欢折腾的话就在自研插件里面集成 Checkstyle 代码,代码是开源的。
Red998
2022-07-26 10:43:09 +08:00
自己写就统一 团队开发 不太可能统一、每个人的开发风格都不一样
humpy
2022-07-26 10:50:00 +08:00
代码自动格式化,我是这么做的:

1. 用 eclipse 调出一个组内统一的代码格式配置;
2. 将相关配置文件打包成一个 jar 包,方便统一使用更新;
3. java 项目使用 spotless-maven-plugin 做代码格式自动化应用,并将插件 task 绑定到 process-sources 这个 phase ,这样每次 maven 编译前,都会自动做代码格式化;
4. 使用 git pre-commit 钩子,在每次 commit 之前,执行 maven spotless:apply 命令,自动格式化代码;
5. 使用 maven-git-hook-plugin ,在 initialize phase ,初始化 .githooks 钩子。

(到这一步了,也就是新拉下来一个项目,只要随便执行一个 maven 指令,就能配置好本地的代码格式化环境,但是好多同事开发完全依赖 idea ,而在 idea 里运行项目,默认不会走正常的 maven 编译流程,触发不了配置的 maven 格式化任务。为了解决这个问题,我们使用 maven archetype 创建项目脚手架,生成的新项目的时候修改了 .idea/workspace.xml 文件,增加了一个执行 maven formatter 的 before lauch action ,这样从 idea 启动应用,也会每次都执行代码格式化了。)

到此基本上一套自动格式化代码的流程就算实现了。同时,对喜欢随时自己做格式化操作的朋友,idea 可以安装 Adapter for Eclipse Code Formatter 插件,使用上面( 1 )步的格式化配置,替换掉 idea 自带的格式化工具。

ps. 做代码格式化有个容易被忽略但很重要的点,是 import 的顺序,这个一定要统一。spotless-maven-plugin 支持使用 eclipse 的 importorder 配置,我们现在是这么弄的:

0=java
1=org
2=com
3=我们公司的 package 前缀
4=
5=\#

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX