Git+Maven+Sonar在提交代码前实现代码质量检查。一.导言为了规范代码质量,让开发者能够写出更高质量的代码,实践了git-hooks中的预提交钩子,在提交代码时可以强制检查本地代码
一.导言
为了规范代码质量,让开发者能够写出更高质量的代码,实践了git-hooks中的预提交钩子,在提交代码时可以强制检查本地代码质量。如果不符合指定的规则,代码将不会被提交。
二、钩子git的钩子介绍
像其他版本控制系统一样,Git可以在某些重要动作发生时触发定制脚本。有两组这样的挂钩:客户端和服务器端。客户机钩子由提交和合并等操作调用,而服务器钩子用于网络操作,如接收推送的提交。你可以随意使用这些钩子。
钩子存储在Git目录下的Hooks子目录中。也就是,。git/hooks在大多数项目中,默认都是例子,名字都以。样本。如果你想启用它们,你必须先删除这个后缀。将一个正确命名的可执行文件放在Git目录的hooks子目录中,以激活hook脚本。这样就可以被Git调用了。
这个方案的效果是通过预提交钩子实现的。
三。声纳简介
Sonar是一个开源的代码质量管理平台,用于管理源代码的质量,可以从七个维度检测代码质量。
通过插件,可以支持20多种编程语言的代码质量管理和检测,包括Java、C #、C/C++、PL/SQL、COBOL、JavaScrip、Groovy等。
3.1。sonar支持的客户端
除了数据库和web服务器,Sonar还有一个重要的部分:客户端。使用特定的客户端程序工具进行分析,不同的客户端程序可以用于不同的语言和不同类型的项目建设。
Sonar提供多种类型的客户端:
客户端
说明
Sonar Runner
推荐默认客户端
Maven
如果项目使用Maven构建推荐使用此种方式
Ant
如果项目使用ant构建则推荐
CI Engine
持续集成,比如Hudson,Jenkins
这次声纳扫描是通过Maven插件实现的。
四。文本
4.1.在Java项目中配置pom.xml
4.1.1.将以下插件添加到pom.xml中
4.1.2.这个插件可以在。安装后git本地仓库的githooks目录。这个文件是git执行提交代码的钩子函数,函数的内容可以写在插件预提交中,如下图所示:
4.1.2、在pom文件继续添加sonar相关的插件4.1.2.继续在pom文件中添加声纳相关的插件。
该插件能够使项目通过sonar:sonar命令实现项目的sonar扫描,其中sonar.login为登陆的token,sonar.host.url为sonar服务的URL,sonar.projectKey为自定义的项目Key(可选)插件可以使项目通过sonar:sonar命令扫描项目,其中sonar.login是登录令牌,sonar.host.url是sonar服务的url,sonar.projectKey是用户自定义的项目键(可选)。
要获取令牌,首先登录sonar服务器,然后如下图所示进行操作:
动词 (verb的缩写)结果验证
如图,可以通过maven sonar:sonar命令扫描项目的代码质量。如果出现以下结果,说明这个声纳插件是有效的。
打开声纳WBE终端查看,可以看到该项目的报告已经生成。
第四,尝试git提交代码来执行sonar
4.1.首先,钩子脚本应该由mvn install命令生成。
假设安装项目成功,打开。githooks项目所在的目录,你会看到预提交文件。打开文件,你会发现写的脚本内容是用githook-maven-plugin插件写的shell脚本内容,证明插件已经生效。
可以看到上图的脚本内容一致。可以看到上面的脚本内容是一致的。
4.2.尝试提交代码,但出现异常:
提交方法中有问题的代码进行测试。
提交有问题的代码,因为预提交文件被替换,所以预提交中的脚本会在代码提交前执行。脚本首先对代码进行mvn sonar:sonar命令操作,然后调用shell命令curl获取声纳的扫描报告,并根据报告判断代码是否可以提交(具体见shell脚本实现)。
可以看到没有办法提交,符合设计。可以看到没办法提交,符合设计。
看正常代码。
注释掉错误代码,然后再次提交。
报告为正常,可以正常提交。报告是正常的,可以正常提交。