2026年git 服务端(git 服务端钩子做代码检查)

git 服务端(git 服务端钩子做代码检查)需求背景 最近在项目开发中 经常遇到库上的代码编不过的场景 有些员工上传代码之前并不去编译 导致测试环境不可用 所以就想到使用 git 钩子在代码上传之前进行检查 不通过的代码无法上传 这里还用到了 checkstyle 插件 主要是制定一些代码规则 对一些待提交的文件进行检查 安装 checkstyle 插件 maven 中集成 checkstyle Maven CheckStyle 插件提供两种预先定义的规则 sun checks xml 和 google checks xml



需求背景

最近在项目开发中,经常遇到库上的代码编不过的场景。有些员工上传代码之前并不去编译,导致测试环境不可用。所以就想到使用git钩子在代码上传之前进行检查,不通过的代码无法上传。

这里还用到了checkstyle插件,主要是制定一些代码规则,对一些待提交的文件进行检查。

安装checkstyle插件

maven中集成checkstyle

Maven CheckStyle插件提供两种预先定义的规则:sun_checks.xml和google_checks.xml,默认提供的为sun_checks.xml。当然你也可以指定自定义的规则集。默认的检查规则很严格,所以最好自定义规则。

自定义规则集的方法如下:

在pom中做如下配置

2.17

checkstyle

新建check-style.xml配置检查规则

"-//Puppy Crawl//DTD Check Configuration 1.3//EN"

"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

maven编译命令

mvn checkstyle:help 查看帮助

mvn checkstyle:check 查看工程是否满足检查。如果不满足,检查失败,可以通过target/checkstyle-result.xml来查看

mvn checkstyle:checkstyle 查看工程是否满足检查。如果不满足,不会失败,可以通过target/site/checkstyle.html查看检查信息

mvn checkstyle:checkstyle-aggregate 检查工程是否满足检查。如果不满足,不会失败,可以通过target/site/checkstyle.html查看

配置git钩子

和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 钩子都被存储在 Git目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。此目录下有一些示例,如下所示:

gitlab如何在MR时进行代码质量检查_git 客户端 所有客户端 钩子

服务端钩子

pre-receive

当用户在本地仓库执行’git-push’命令时,服务器上运端仓库就会调用 pre-receive钩子。在开始更新远程仓库之前,这个钩子被调用。钩子的执行结果(exit status)决定此次更新能否成功。

update

update 脚本和 pre-receive 脚本十分类似,不同之处在于它会为每一个准备更新的分支各运行一次。

假如推送者同时向多个分支推送内容,pre-receive 只运行一次,相比之下 update 则会为每一个被推送的分支各运行一次。

post-receive

post-receive 挂钩在整个过程完结以后运行,可以用来更新其他系统服务或者通知用户。 它接受与 pre-receive

相同的标准输入数据。

客户端钩子

客户端钩子包含pre-commit、prepare-commit-msg、commit-msg、post-commit等,其中最常用的是pre-commit。

pre-commit被 ‘git-commit’ 命令调用, 而且可以通过在命令中添加–no-verify参数来跳过。这个钩子没有参数,在得到提交消息和开始提交(commit)前被调用。如果钩子执行结果是非零,那么 'git-commit’命令就会中止执行。

配置客户端钩子

客户端的钩子使用时,可以把文件后面的.sample去掉,提交代码时就会立即生效。服务端的钩子需要在服务器上面使用。pre-commit集成checkstyle脚本如下:

mvn -Dmaven.test.skip=true clean install

#判断执行上面mvn操作的返回值是否为0

if [ $? -ne 0 ]

then

echo "构建失败,请查看代码问题!"

exit 1;

else

echo "构建成功,开始检查代码问题!"

fi

#使用checkstyle检查代码

mvn checkstyle:check

if [ $? -ne 0 ]

then

echo "构建失败,请查看代码问题!"

exit 1;

else

echo "构建成功,开始检查代码问题!"

fi

配置完成之后,就可以提交代码测试一下,如果代码检查失败,会报错。

gitlab如何在MR时进行代码质量检查_xml_02

参考

Maven CheckStyle Plugin集成

Java代码规范之CheckStyle + Git Hook

自定义 Git - Git 钩子

Git 钩子脚本介绍

gitlab+checkstyle实现代码上传时进行代码规范检查

今天的文章 2026年git 服务端(git 服务端钩子做代码检查)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-04-06 21:06
下一篇 2025-02-20 20:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/51808.html