轩辕李的博客 轩辕李的博客
首页
  • Java
  • Spring
  • 其他语言
  • 工具
  • HTML&CSS
  • JavaScript
  • 分布式
  • 代码质量管理
  • 基础
  • 操作系统
  • 计算机网络
  • 编程范式
  • 安全
  • 中间件
  • 心得
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

轩辕李

勇猛精进,星辰大海
首页
  • Java
  • Spring
  • 其他语言
  • 工具
  • HTML&CSS
  • JavaScript
  • 分布式
  • 代码质量管理
  • 基础
  • 操作系统
  • 计算机网络
  • 编程范式
  • 安全
  • 中间件
  • 心得
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 分布式

  • 代码质量管理

    • 代码质量管理之规范篇
    • 代码质量管理之工具篇
      • Git
        • 工作流
        • 合并冲突
        • rebase和merge
      • IntelliJ IDEA
        • 检查
        • 后缀补全
        • 插件
      • Jenkins
      • 总结
    • 代码质量管理之代码审查
    • Git提交规范
  • 基础

  • 操作系统

  • 计算机网络

  • 编程范式

  • 安全

  • 中间件

  • 心得

  • 架构
  • 代码质量管理
轩辕李
2022-03-19
目录

代码质量管理之工具篇

有了项目规范之后,还需要借助好的工具来落地。
这篇文章主要讲解Git、IntelliJ IDEA、Jenkins在实践中的应用。

# Git

Git是一个分布式版本控制系统,主要来用它实现版本控制、团队协作和分支管理。

# 工作流

使用Git的第一步是先明确团队要使用的工作流,常见的工作流有:

  • Centralized Workflow(中心化工作流):这种工作流类似于传统的集中式版本控制系统(如SVN),团队成员在一个中央仓库上工作。开发者从中央仓库克隆一个仓库副本,直接在master分支上进行开发,然后将更改推送回中央仓库。这种工作流适合小型团队,但可能导致合并冲突。
  • Feature Branch Workflow(功能分支工作流):在这种工作流中,所有新的功能或bug修复都在单独的分支上进行开发。当功能完成时,通过发起Pull Request(PR)将功能分支合并回主分支。这种工作流有助于代码审查、避免合并冲突,保持master分支的稳定性。
  • Gitflow Workflow(Git流工作流):Gitflow工作流是功能分支工作流的扩展,为项目发布引入了专门的分支。它定义了一个固定的分支模型,包括master分支、develop分支、feature分支、release分支和hotfix分支。这种工作流适用于具有多个并行开发和发布的项目。
  • Forking Workflow(分叉工作流):在分叉工作流中,每个开发者都拥有自己的公共仓库副本。开发者在自己的仓库中进行开发,然后通过发起Pull Request将更改合并回上游的主仓库。这种工作流非常适合开源项目,因为它允许任何人为项目贡献代码,同时不会影响主仓库的稳定性。

个人开发者可以选择中心化工作流;
小团队可以选择功能分支工作流,实践操作中PR步骤也不是必须的,代码审查过后,也可以允许开发者自己合并到main分支;
大型团队可以选择Gitflow工作流或者是Forking工作流。

# 合并冲突

合并冲突是一件应该慎重对待的事情,一定要谨慎处理,稍有不慎会出现代码丢失的情况。
合并冲突的最佳实践如下:

  • 理解差异:在合并冲突之前,需要充分理解差异,了解冲突的原因,最好找到冲突代码的编写者,一起讨论决定怎么合并
  • 选择合并策略:在解决冲突时,有多种合并策略可供选择,例如使用本地分支的更改、使用远程分支的更改或手动合并等。大多数情况下请选择手动合并
  • 了解工具:使用Git提供的工具进行冲突解决,例如使用git merge --no-ff或git cherry-pick命令,或者使用图形界面的Git客户端来解决冲突。个人最喜欢的是TortoiseGit客户端,不太喜欢IDEA内置的合并工具

# rebase和merge

对于git rebase和git merge两个命令,总是容易搞混。
规则是:

  • 单人开发的分支,为了跟上main分支的进度,可以使用rebase
  • 多人共同开发的分支不允许使用rebase
  • PR合并的时候使用merge命令

# IntelliJ IDEA

IntelliJ IDEA是一款由JetBrains公司开发的,集成开发环境(IDE),是Java编程的最佳助手。
熟练的使用IDEA,可以让Java开发者的效率大大提升。如果原先用的是Eclipse,请参考这篇文章:从Eclipse到IDEA

# 检查

IDEA的检查(Inspection)功能非常强大,在规范中我们提到

IDEA中检查不允许关闭。【弹性:可以选择关闭某些检查,但要严格控制】

所谓的严格控制,就是创建一个公示列表。下面是一个允许禁止的检查列表:

  • Spring Core--代码--非建议的field注入
    • 原因:项目中使用了@Autowired,这是允许的
  • Spring Core--代码--Spring Bean中自动装配不正确
    • 原因:Dao接口或Mapper接口无实现类
  • 校对--拼写错误
    • 原因:拼写检查很难覆盖所有语句
  • Ali-check--不允许任何魔法值
    • 原因:允许一些简单魔法值
  • Ali-check--除常用方法(如getXxx/isXxx)等外,不要在条件判断中执行复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量,以提高可读性。
    • 原因:允许一些复杂判断
  • Freemarker--未解析的引用
    • 原因:ftl必须关联方法,目前还不好全面覆盖到
  • HTML--可访问性--表单输出没有相关的label
    • 原因:前端项目这条不能禁用;JSP老项目可以禁用

# 后缀补全

IDEA本身有很多后缀补全,比如if、nonnull、null等等。
当然,也可以自己扩展。比如开发中经常判断数字是否大于0:
1681889237892

这样当你输入的时候
image
就会快速的得到num != null && num > 0

# 插件

IDEA提供了插件市场,通过插件给编辑器提供了很高的扩展性。

常用的插件推荐:

  • google-java-formater 谷歌的代码格式化规则
  • Alibaba Java Coding Guidelines 阿里的代码规则
  • Maven Helper Maven扩展支持
  • Json Helper Json文件阅读器
  • GenerateAllSetter 快速生成Bean的Setter方法
  • Easy Doc 快速生成JavaDoc文档注释
  • Vo2Dto Bean复制的辅助工具

如果公司内部有自己独有的基础框架,那么也可以通过开发自定义插件提供对基础框架的支持。

# Jenkins

Jenkins 是一个开源的自动化构建工具,可以用于持续、自动地构建、测试和部署软件。

Jenkins主要是配合插件来使用,常用的插件有:

  • SSL 帮助你在 Jenkins 上配置安全套接字层(SSL)来保护传输数据的安全。它允许你为 Jenkins 实例配置 HTTPS,以便在浏览器和服务器之间创建加密的连接。要使用此插件,你需要具有有效的 SSL 证书(可以是自签名的,也可以是从权威证书颁发机构获得的)。 安装插件后,进入 "Manage Jenkins" > "Configure Global Security",在 "Enable security" 选项下,你可以配置 HTTPS 的相关选项。
  • Gitlab Hook 用于将 GitLab 仓库与 Jenkins 集成。这允许你在 GitLab 上的代码更改触发 Jenkins 构建。安装此插件后,你需要在 Jenkins 项目中配置 GitLab 触发器
  • Generic Webhook Trigger 允许你使用任意来源的 Webhook 触发 Jenkins 构建。通过解析传入 Webhook 的数据,你可以根据需要自定义触发条件。当你的代码不是放在GitLab系统上的时候,需要使用到这个插件
  • Role-based Authorization Strategy 允许你在 Jenkins 中基于角色来分配用户权限。这有助于细化权限管理和控制对 Jenkins 资源的访问

这些插件的需要配合使用,基本操作流程是:

  • 使用SSL配置服务器的连接
  • 使用Role-based Authorization Strategy配置用户权限,比如prod、sit环境有不同的账号
  • 使用Gitlab Hook或Generic Webhook Trigger来完成自动化任务执行。比如main分支push的时候,指定特定操作

# 总结

工欲善其事,必先利其器。
有了规范之后,执行和落实也是很重要的。
本篇文章从工具使用角度对代码质量管理做了补充,分别介绍了Git、IntelliJ IDEA、Jenkins在实践中的应用,希望对你所有帮助。

祝你变得更强!

编辑 (opens new window)
上次更新: 2024/10/25
代码质量管理之规范篇
代码质量管理之代码审查

← 代码质量管理之规范篇 代码质量管理之代码审查→

最近更新
01
Spring Boot版本新特性
09-15
02
Spring框架版本新特性
09-01
03
Spring Boot开发初体验
08-15
更多文章>
Theme by Vdoing | Copyright © 2018-2025 京ICP备2021021832号-2 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式