事情是这样的,项目要求提交的代码都必须要格式化
虽然这个要求很简单,但是总有搞忘记的时候吧,这不,又搞忘记了😭
为了避免这种事情发生,我决定使用建木 CI 来对 Java 代码进行自动格式化,以后就只管提交代码,再也不用操心格式化的事情了!
下面给大家分享一下如何使用建木 CI 来格式化 Java 代码!
为什么要格式化 Java 代码
规范的代码是一个程序员基本的职业素养。首先,统一风格的代码可提高可读性、易于 review,从而促进团队成员更好的协作。其次,提高代码质量,也更利于项目的维护。对于一个团队而言,代码规范十分重要,代码风格不统一会让整个团队显得极其不专业。如下图,格式化后的代码(右)结构明显更加清晰,便于阅读理解。
为什么要使用建木 CI 格式化 Java 代码
如何用建木 CI 格式化 Java 代码
建木 Hub 已经提供了格式化 Java 代码的节点,我们可以在建木 CI 中使用该节点,配合其他节点和 webhook,就可以做到对 Java 代码进行自动格式化。
节点链接:
https://jianmuhub.com/_/google_java_format
节点输入参数:
type
:缩进类型,可选值:AOSP-表示缩进 4 个空格,GOOGLE-表示缩进两个空格。默认为 AOSP
files
:需要进行格式化的文件/文件夹路径集合。如果路径是文件夹,节点会遍历文件夹中的每一个文件进行代码格式化
注意:非 Java 文件不会被格式化,节点日志如下:
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 地址
这里以 gitee 仓库为例,进入仓库管理,添加 webhook,事件选择 push
添加好 webhook 后,每次你 push 代码到仓库后,webhook 就会触发流程,自动对 Java 代码进行格式化😁
流程运行如下:
格式化代码提交信息如下:
看到这里,有没有觉得很方便呢,以后每次只要提交代码就行了,格式化的事就交给建木 CI 去做吧!
有兴趣的小伙伴快去尝试一下吧!
本文为建木博主「早春的树」的原创投稿文章,转载请联系授权。
项⽬官⽹:https://jianmu.dev
项⽬托管:https://gitee.com/jianmu-dev
项⽬文档:https://docs.jianmu.dev
在线体验:https://ci.jianmu.dev
评论