Gitlab Custom_hooks集代码规则&注释校验脚本(pre-receive)

本文详细介绍了一种利用GitLab的预接收Hook进行自动化代码审查的方法。通过自定义的Shell脚本,实现了对Commit信息的规范化检查及代码风格的自动验证,确保每次提交都遵循项目既定的规范。
#!/bin/bash

##脚本提供功能:Commit提交的Message和代码规范是否符合统一规范
##分三个部分:
# 1.变量定义部分
# 2.校验部分:注释校验&代码分析
# 3.初始化入口
## 校验流程:
# 1.先做提交注释校验,校验的规则:是否已${TYPE_LIST}定义的开头,且内容长度是否大于${COMMIT_MESSAGE_MIN_LENGTH}
# 2.如果是master分之,修改了pom文件还会校验是否存在snapshot版本的jar
# 3.最后代码规范校验
## (单个项目校验)文件放置目录
# 1./var/opt/gitlab/git-data/repositories/@hashed/xx/xx/xx.git或者/var/opt/gitlab/git-data/repositories/${group}/${project_name}.git/
# 2.创建custom_hooks目录
# 3.在custom_hooks目录下创建pre-receive文件,并保持776可执行权限,且保持该文件权限:chown git:git pre-receive 以及阿里云的p3c-pmd的jar包权限
# 4.给chown -R git:git custom_hooks
# 5.官方文档说明:https://docs.gitlab.com/ee/administration/custom_hooks.html#setup


####### 初始化变量部分 #########

## 定义java_home变量 需要修改你配置的java_home
JAVA_HOME=/usr/local/jdk1.8.0_141
## 是否开启commit message的校验:0是,1否
CHECK_COMMIT_MESSAGE_ON=0
## 是否开启代码检查:0是,1否
CHECK_CODE_RULE_ON=0
## 是否校验master上的pom文件是否包含snapshot:0是,1否
CHECK_MASTER_POM_SNAPSHOT_ON=1
## 注释内容最小长度,默认20
COMMIT_MESSAGE_MIN_LENGTH=20
### 代码校验规则:0使用阿里云P3C规则,1使用checkStyle
CODE_RULE_TYPE=0

## 定义提交开头类型字符规则
## e.g: fix:测试提交bug修复,Bug编号#12
TYPE_LIST=(
         'feat:'   #新功能feature
         'update:' #在feat内修改
         'fix:'  #修补bug
         'docs:'  #文档
         'style:' #格式化,不影响代码运行的变动
         'refactor:' #重构
         'pref:'  #性能优化
         'test:'  #增加测试
         'chore:'  #构建过程或辅助工具的变动
         #'[ci skip]'  #忽略校验
)

## 获取当前路径
BASE_PATH=$(cd `dirname $0`; pwd)
echo 'BASE_PATH: '$BASE_PATH

#定义和组装校验规则
declare -a regex_list
arrLen=${#TYPE_LIST[@]}
for ((i=0;i<$arrLen;i++)) do
  regex_list[i]='^'${TYPE_LIST[i]}
done
regex_list[$arrLen+1]='^[ci skip]:'
#echo "reg_list=== "${regex_list[@]}
separator="|"
## 合并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值