需求背景
最近在项目开发中,经常遇到库上的代码编不过的场景。有些员工上传代码之前并不去编译,导致测试环境不可用。所以就想到使用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 。此目录下有一些示例,如下所示:
服务端钩子
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
配置完成之后,就可以提交代码测试一下,如果代码检查失败,会报错。
参考
Maven CheckStyle Plugin集成
Java代码规范之CheckStyle + Git Hook
自定义 Git - Git 钩子
Git 钩子脚本介绍
gitlab+checkstyle实现代码上传时进行代码规范检查
到此这篇git 服务端(git 服务端钩子做代码检查)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-wfwjg/20811.html