Java篇|忘记格式化代码,把女朋友鸽了
2022-03-28 早春的树
Java篇|忘记格式化代码,把女朋友鸽了
作者:早春的树 发布时间:2022-03-28 10:30:00

事情是这样的,项目要求提交的代码都必须要格式化

虽然这个要求很简单,但是总有搞忘记的时候吧,这不,又搞忘记了😭

为了避免这种事情发生,我决定使用建木CI来对Java代码进行自动格式化,以后就只管提交代码,再也不用操心格式化的事情了!

下面给大家分享一下如何使用建木CI来格式化Java代码!

为什么要格式化Java代码

规范的代码是一个程序员基本的职业素养。首先,统一风格的代码可提高可读性、易于review,从而促进团队成员更好的协作。其次,提高代码质量,也更利于项目的维护。对于一个团队而言,代码规范十分重要,代码风格不统一会让整个团队显得极其不专业。如下图,格式化后的代码(右)结构明显更加清晰,便于阅读理解。

为什么要使用建木CI格式化Java代码

  • 开发者不用关心格式化代码,专注于开发
  • 格式化代码风格统一,不受开发者和IDE的影响
  • 相比起在IDE中手动格式化代码,建木CI可以实现自动格式化代码

如何用建木CI格式化Java代码

建木Hub已经提供了格式化Java代码的节点,我们可以在建木CI中使用该节点,配合其他节点和webhook,就可以做到对Java代码进行自动格式化。

  • 谷歌Java格式化节点

节点链接:

https://jianmuhub.com/_/google_java_format

节点输入参数:

type: 缩进类型,可选值:AOSP-表示缩进4个空格,GOOGLE-表示缩进两个空格。默认为AOSP

files:需要进行格式化的文件/文件夹路径集合。如果路径是文件夹,节点会遍历文件夹中的每一个文件进行代码格式化

注意:非Java文件不会被格式化,节点日志如下:

  • 建木CI实现自动格式化代码的流程图:

  • 流程DSL示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
name: 自动格式化Java代码

global:
param:
# 需要进行格式化的代码仓库地址
git_remote_url: https://xxx/xxx.git

trigger:
type: webhook
param:
# gitee中的webhook钩子事件
- name: gitee_event
type: STRING
exp: $.header.x-gitee-event
# 仓库项目名
- name: project_name
type: STRING
exp: $.body.json.project.name
# webhook返回的分支信息
- name: gitee_ref
type: STRING
exp: $.body.json.ref
# 提交的commit信息
- name: commit_message
type: STRING
exp: $.body.json.commits[0].message
# 条件满足时触发流程
only: (${trigger.gitee_event} == "Push Hook" && ${trigger.commit_message} != "refactor:auto format code")
pipeline:
git_clone:
type: git_clone:1.2.1
alias: 克隆项目
param:
remote_url: ${global.git_remote_url}
# 使用trigger提取的分支
ref: ${trigger.gitee_ref}
# 使用添加好的密钥
username: ((gitee.username))
password: ((gitee.password))
google_java_format:
type: google_java_format:1.0.0-1.15.0
alias: 格式化代码
param:
# 格式化仓库所有文件
files: '["${git_clone.git_path}"]'
git_push:
type: git_push:1.0.4
alias: push格式化代码
param:
remote_url: ${global.git_remote_url}
remote_branch: ${git_clone.git_branch}
username: ((gitee.username))
password: ((gitee.password))
source_path: ${git_clone.git_path}
target_dir: ${trigger.project_name}
commit_message: 'refactor:auto format code'
  • 添加仓库webhook

复制webhook地址

这里以gitee仓库为例,进入仓库管理,添加webhook,事件选择push

  • 触发流程

添加好webhook后,每次你push代码到仓库后,webhook就会触发流程,自动对Java代码进行格式化😁

流程运行如下:

格式化代码提交信息如下:

看到这里,有没有觉得很方便呢,以后每次只要提交代码就行了,格式化的事就交给建木CI去做吧!

有兴趣的小伙伴快去尝试一下吧!