背景介绍
最近公司要求做JAVA代码规范检查,经过学习了解,最终使用了社区版Sonarqube作为检测工具(Sonarqube检测工具可以查看我之前的文章),服务和gitlab配置都搭建完毕,但是落地执行时发现很多人根本不在乎检测结果,工具成了摆设。没办法,软的不行,来硬的吧,你不是不在乎检测结果吗?那咱就来个限制吧,检测不合格不允许提交代码,这下看你还在不在乎!!!
既然加了代码检测校验,必然会代码提交时先检测代码,通过后才允许提交,流程变长了,提交时间必然会受到影响,目前没有想到更好的办法,先跳过,功能实现了再说。
代码提交检测需要在gitlab的钩子文件中加入控制逻辑,以实现代码提交控制,gitlab客户端和服务端有很多钩子文件,具体可以查看gitlab。我这里主要使用客户端的pre-push文件和服务端的pre-receive文件,客户端pre-push主要是触发sonarqube检测并生成报告pre-receive主要是检测生成的报告结果是否符合要求,符合要求才允许提交,否则打回重新修改代码直至符合标准。
流程图如下:

实现过程:
-
编写pre-push文件