IDEA 代码提交前流程及提交日志模板化

2023-10-29

前言

在开发大型项目时,通常都是由团队来进行开发。此时,每个人有每个人的代码编写风格和提交习惯,如果放任自由发挥,那么代码质量和代码提交日志就难免风格各异,导致项目代码质量难以保持统一。针对这一问题,往往公司在以项目组进行开发时,在进入正式编码前,都会制定一个标准的流程,用来规范代码提交前的流程,同时对提交日志进行规范化。从而最大程度上保持项目的代码风格统一,提高代码可读性。

以下就给大家介绍一下最常见的代码提交前的规范化流程,以及如何模板化我们的代码提交日志。

代码提交前检查流程

推荐插件

p3c

  • 下载地址

https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines/versions

  • 安装及使用

https://github.com/alibaba/p3c/wiki/IDEA%E6%8F%92%E4%BB%B6%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3

SonarLint

  • 下载地址

https://plugins.jetbrains.com/plugin/7973-sonarlint/versions

  • 安装及使用

https://www.cnblogs.com/cocoxu1992/p/11336723.html

提交前的配置项

提交前的配置

Alibaba Code Guidelines

安装 p3c 插件后,才会有该选项。在提交代码改动之前,如果勾选此选项,则会去扫描代码中不符合 p3c 规则中的代码,然后弹窗提示存在可疑代码,此时可以到控制台查看存疑的代码。然后只需要根据控制台中提示的去修改代码即可。

  • 代码存疑弹窗
  • 控制台中存疑的代码提示

Reformat code

提交前格式化代码,假设我们在代码中写了如下代码:

int a=3;

如果我们在提交前勾选了此选项,提交时 IDEA 就会自动对此行代码进行格式化,变成以下的格式,从而大大提高代码可读性。

int a = 3;

Rearrange code

重新编排代码,IntelliJ IDEA 支持各种复杂的编排设置选项,当我们在 IDEA 中设置好了编码功能之后,这里就可以尝试勾选这个进行自动编排。不过一般没有去做特定的编码功能设置,因此建议不勾选。

Optimize imports

优化导包(删除无用的导包)。假如在写代码时一开始引入了 Scanner 包,但后续又没有用到,此时勾选此选项 IDEA 就会自动将引入的 Scanner 包删除。

  • 勾选前
package com.demo;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
  • 勾选后
package com.demo;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

Analyze code

勾选该选项后,IDEA 会用默认的配置文件去扫描我们所写代码的质量。如果扫描发现问题,则会弹出以下类似的弹窗,此时只要点击 Review 就可以对代码中存在问题的地方进行 Review,根据所给提示对代码进行修改。

Check TODO

检查代码中存在 @todo 注解的地方并给出提示。一般在代码中添加 @todo 表示此时代码中还有未完成的功能,此时可以提醒你去补全还未完成的功能代码。

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        //@todo
    }
}

如果我们新增的代码如上,此时如果在提交点前勾选 Check TODO 选项,就会弹窗提示。

此时点击 Review 就可以去查看对应分析结果,然后去找到对应 todo 所在的代码对它进行补充。

Cleanup

清除下版本控制系统,去掉一些版本控制系统的错误信息,主要针对 SVN,Git 不适用,一般建议不勾选。

Update copyright

如果代码需要版权标识时,需要提前在 IDEA 中配置相关版权信息。配置的流程 settings->Editor->copyright->copyright profiles,然后添加类似于以下的版权信息:

Copyright(c)2002-2022, xxx 有限公司
项目名称:$project.name
文件名称:$file.fileName
Date:$today
Author:xxx

配置完成后,当提交你的代码更改时,勾选该选项可以检查更新版权,这样提交后更改的文件将有它们的版权更新。

Perform SonarLint analysis

安装 SonarLint 插件后才会有的选项。勾选该选项后,SonarLint 会对代码进行检查,发现代码中的一些 bug、漏洞、异味。然后根据控制台中的提示信息对代码进行修改后再次提交,能够一定程度上提高代码质量。

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        System.out.println("demo");
        int a;
        boolean flag = false;
        //@todo
    }
}


提交日志模板化(Git Commit Template)

概述

通过使用该插件,能够规范在使用 IDEA 提交代码时的注释说明。通过模板化后的日志,便于快速查找,回溯之前的工作。

下载安装

  1. 下载地址

https://plugins.jetbrains.com/plugin/9861-git-commit-template/versions

  1. 安装

https://blog.csdn.net/m0_46636892/article/details/122116712

使用教程

提交信息的模板

<type 类型>(<scope 可选作用域>): <subject 描述>
// 空行
<body 可选的正文>
// 空行
<footer 可选的脚注>

主要分为三部分:

  • Head(<type 类型>(<scope 可选作用域>): <subject 描述>
  • Body(<body 可选的正文>
  • Footer(<footer 可选的脚注>

Head 参数说明

  1. type(必填)
类型 英文 中文说明
feat A new feature 新功能
fix A bug fix bug 修复
docs Documention only 文档注释
style Changes that do not affect the meaning of the code(white-space、formatting、missing semi-colons、etc) 不影响代码运行的变动(格式化、去空格等)
refactor A code change that neither fixes a bug nor adds a feature 重构、优化(既不增加新功能,也不是修复 bug
perf A code change that improves performance 性能优化
test Adding missing tests or correcting existing tests 增加测试
build Changes that affect the build system or external dependencies 影响生成构建或外部依赖项的更改
ci Changes to our CI configuration files and scripts 对配置项配置文件和脚本的更改
chore Other changes that don't modify src or test files 其他不影响源码和测试的改动
revert Reverts a previous commit 回退版本
  1. scope(可选)

用户说明此次提交所影响的范围,常见的有数据层、控制层、视图层等,这个需要根据自己的项目来具体定义。

  1. subject(必填)

此次提交的概括,一般建议不超过 50 字,结尾不加任何标点符号。

Body 参数说明

对此次提交的详细描述,可以分为多行,每行建议控制在 72 个字以内,以条目的形式给出,范例如下:

- 修复 bug1
- 修复 bug2

Footer 参数说明

主要用于两种情况:

  1. 不兼容的变动,对应具体使用部分图中的 Breaking changes.
  2. 关闭 Issue,对应具体使用部分图中的 Closed issues.

具体使用

  1. 安装完成后,在代码提交界面会有以下图标,点击进行参数配置。

  1. 根据自己的需求进行相关配置。

  1. 完成配置之后,点击右下角的 ok,就会自动根据模板生成提交的具体信息,最后进行提交即可,一个自动生成的具体示例如下:
fix(改动生效的范围): 代码改动的简述

代码改动的具体描述1

BREAKING CHANGE: 不兼容的变更

Closes 关闭的issue

总结

可能屏幕前的你所在的项目组并没有这么多的流程和提交规范,但养成良好的编码习惯总归是好的。代码不仅仅是写给自己看的,一个高手不仅仅是能够实现复杂的功能,能把代码编写得能让人看着简洁清爽也是一种艺术。

好了,今天的文章到此就结束了,感谢大家赏脸阅读。对于文中如果有描述不清的地方,或者有什么建议我改进的建议,欢迎与我讨论交流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDEA 代码提交前流程及提交日志模板化 的相关文章

随机推荐

  • 阿里云教程安装WordPress没有 安装新插件 及 主题 的按钮

    表象 在插件页面和主题页面没有Add New的按钮 经过一番百度后 主要分为两派 文件权限问题 your wordpress site folder如果按照阿里云教程 该地址为 var www html wp blog 解决方案 chown
  • React 项目:计算器

    本教程专注于 React 部分 故对 css 及 js 不做过多解释 项目地址 yuzheng14 calculator github com 分析原型 应用中一共包含 4 个组件 APP 整个应用的整体 Display 展示输入数据及计算
  • 外网SSH远程连接linux服务器「cpolar内网穿透」

    文章目录 1 Linux CentOS安装cpolar 2 创建TCP隧道 3 随机地址公网远程连接 4 固定TCP地址 5 使用固定公网TCP地址SSH远程 本次教程我们来实现如何在外公网环境下 SSH远程连接家里 公司的Linux Ce
  • SpringBoot结合Liquibase实现数据库变更管理

    从零打造项目 系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实
  • Java利用正则表达式获取指定两个字符串之间的内容

    package com starit analyse util import java text SimpleDateFormat import java util ArrayList import java util List impor
  • CentOS 7 下使用 MySQL 5.7 + PHP 7 + Apache 部署 Nextcloud

    准备 如果你准备使用 VPS 或者云主机作为 Nextcloud 服务器的话 可以先安装一个 Xshell 注 以下代码块中 代表注释 代表 Linux 命令 姊妹篇 Ubuntu 16 04 下使用 MySQL 5 7 PHP 7 Apa
  • python对指定字符串逆序的6种方法

    对于一个给定的字符串 逆序输出 这个任务对于python来说是一种很简单的操作 毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了 今天总结了一下python中对于字符串的逆序输出的几种常用的方法 方法一 直接使用字符串切片功能逆转
  • cuda学习笔记之异步并行执行

    异步函数使得主机端与设备端并行执行 控制在设备还没有完成前就被返回给主机线程 包括 kernel启动 以Async为后缀的内存拷贝函数 device到device内存拷贝函数 存储器初始化函数 比如cudaMemset cudaMemset
  • linux离线安装llvm,Debian/Ubuntu Linux 下安装LLVM/Clang 编译器

    第一步 首先编辑 etc apt sources list 加入以下源 Debian平台 deb http llvm org apt wheezy llvm toolchain wheezy main deb src http llvm o
  • Qt将文件保存到指定目录下(另存为的功能)

    因为Qt才开始入门 对文件的操作还不是很熟练 经过一段时间查找终于找出一些适用于入门的代码 QDir d d mkpath D 123 file new QFile D 123 tmp file gt open QFile WriteOnl
  • MySQL索引实现原理分析

    目前大部分数据库系统及文件系统都采用B Tree B树 或其变种B Tree B 树 作为索引结构 B Tree是数据库系统实现索引的首选数据结构 在 MySQL 中 索引属于存储引擎级别的概念 不同存储引擎对索引的实现方式是不同的 本文主
  • docker安装Apollo,并用java连接测试

    What is Apollo 背景 随着程序功能的日益复杂 程序的配置日益增多 各种功能的开关 参数的配置 服务器的地址 对程序配置的期望值也越来越高 配置修改后实时生效 灰度发布 分环境 分集群管理配置 完善的权限 审核机制 在这样的大环
  • C语言-文件

    C语言 文件 一 为什么使用文件 二 文件的打开与关闭 1 fopen 1 r w a 2 rb wb ab 3 r w a 4 rb wb ab 2 fclose 三 文件顺序读写函数 1 fgetc fputc 2 fgets fput
  • Ubuntu18.04 python 开发usb通信

    一 安装环境 1 安装pip sudo python3 get pip py 或 sudo i apt update apt install python3 pip 确定pip是否安装成功 xxx desktop pip3 version
  • 【Transformers】第 3 章:自动编码语言模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 瑞吉外卖项目——删除和批量删除套餐功能

    需求分析 用户点击删除按钮 可以删除对应的套餐 也可以通过复选框选择多个套餐 点击批量删除 一次性删除多个套餐 注意 对于状态在售卖中的套餐不能删除 需要先停售 之后才能删除 代码开发 前后端发交互 前端携带id发送请求 请求服务端 服务端
  • 牛客网剑指offer java 全部题解

    经过数月的努力 终于更完了牛客网的66道剑指offer 以下的顺序和大家在牛客网的顺序是一样的 排序也花了不少时间 希望对大家找工作 提高算法能力能起到些许帮助 每天一道剑指offer 二维数组中的查找 https mp weixin qq
  • Redis主从连接失败 connected_slaves:0

    进行主从连接配置时 主服务器使用info replication查到的 connected slaves数一直是0 原因是主服务器设置了密码 找到从服务器的配置文件redis conf 在配置文件中找到 masterauth
  • python如何做敏感度分析,使用SALib工具箱从测量数据进行Python敏感性分析

    I would like to understand how to use the SALib python toolbox to perform a Sobol sensitivity analysis to study paramete
  • IDEA 代码提交前流程及提交日志模板化

    前言 在开发大型项目时 通常都是由团队来进行开发 此时 每个人有每个人的代码编写风格和提交习惯 如果放任自由发挥 那么代码质量和代码提交日志就难免风格各异 导致项目代码质量难以保持统一 针对这一问题 往往公司在以项目组进行开发时 在进入正式