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

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

大家好,我是讯享网,很高兴认识大家。



需求背景

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

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

安装checkstyle插件

maven中集成checkstyle

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

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

在pom中做如下配置

2.17

checkstyle

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

/p>

”-//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 ]</p><p>then</p><p>echo "构建失败,请查看代码问题!"</p><p>exit 1;</p><p>else</p><p>echo "构建成功,开始检查代码问题!"</p><p>fi</p><p>#使用checkstyle检查代码</p><p>mvn checkstyle:check</p><p>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实现代码上传时进行代码规范检查

小讯
上一篇 2025-06-09 20:05
下一篇 2025-04-16 19:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/178032.html