git钩子触发条件(git服务端钩子多分支)

Git+Maven+Sonar实现提交代码前进行代码的质量检查一、前言为了规范代码质量,使开发人员写出更高质量的代码,实践了一下git-hooks中的pre-commit钩子,可以在提交代码时强制校验本地代码质量,若不符合指定规则不给予代码的提交。二

Git+Maven+Sonar实现提交代码前进行代码的质量检查

一、前言

为了规范代码质量,使开发人员写出更高质量的代码,实践了一下git-hooks中的pre-commit钩子,可以在提交代码时强制校验本地代码质量,若不符合指定规则不给予代码的提交。

二、git的钩子hook 介绍

和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。有两组这样的钩子:客户端的和服务器端的。客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。你可以随心所欲地运用这些钩子。

钩子都被存储在 Git 目录下的 hooks 子目录中。也即绝大部分项目中的 .git/hooks,默认存在的都是示例,其名字都是以 .sample 结尾,如果你想启用它们,得先移除这个后缀。把一个正确命名且可执行的文件放入 Git 目录下的 hooks 子目录中,即可激活该钩子脚本。这样一来,它就能被 Git 调用。

本次方案实现效果就是通过pre-commit钩子实现。

三、sonar的介绍

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。

通过插件形式,可以支持包括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插件方式实现sonar扫描。

四、正文

4.1、在Java项目配置pom.xml

4.1.1、pom.xml中增加如下插件

git钩子触发条件(git服务端钩子多分支)

4.1.2、该插件可以使得在install以后在git本地仓库的.githooks目录下生成一份自定义的pre-commit文件,该文件是git进行提交代码执行的钩子函数,函数内容在插件pre-commit中可以编写,如下图:

git钩子触发条件(git服务端钩子多分支)
git钩子触发条件(git服务端钩子多分支)

4.1.2、在pom文件继续添加sonar相关的插件

git钩子触发条件(git服务端钩子多分支)
git钩子触发条件(git服务端钩子多分支)

该插件能够使项目通过sonar:sonar命令实现项目的sonar扫描,其中sonar.login为登陆的token,sonar.host.url为sonar服务的URL,sonar.projectKey为自定义的项目Key(可选)

获取token的办法,首先通过登录sonar服务器,再如下图操作:

git钩子触发条件(git服务端钩子多分支)

五、结果验证

如图所示,通过maven sonar:sonar命令可以对项目执行代码质量扫描,如果出现如下结果证明这个sonar插件有效。

git钩子触发条件(git服务端钩子多分支)

再打开sonar WBE端查看,可以看到项目的报告已经生成。

git钩子触发条件(git服务端钩子多分支)

四、尝试git提交代码执行sonar

4.1、首先要通过mvn install 命令把钩子脚本生成。

假设install项目成功了,打开项目所在的.githooks 目录查看,将看到pre-commit 文件,打开文件查看会发现所编写的脚本内容正是在githook-maven-plugin插件编写的shell脚本内容,此时证明该插件已经生效。

git钩子触发条件(git服务端钩子多分支)
git钩子触发条件(git服务端钩子多分支)
git钩子触发条件(git服务端钩子多分支)

可以看到上图的脚本内容一致。

4.2、尝试提交有异常的代码:

在方法里面提交有问题的代码进行测试。

git钩子触发条件(git服务端钩子多分支)

把有问题的代码进行提交,因为替换了pre-commit文件, 所以在代码提交前会执行pre-commit里面的脚本,脚本首先通过对代码进行 mvn sonar:sonar 命令操作,然后再调用shell命令curl获取sonar的扫描报告,根据报告判断是否可以提交代码(详细查看具体的shell脚本实现)

git钩子触发条件(git服务端钩子多分支)
git钩子触发条件(git服务端钩子多分支)

可以看到没有办法提交,符合设计。

再看正常代码的情况

git钩子触发条件(git服务端钩子多分支)

把错误代码注释掉,再次提交

git钩子触发条件(git服务端钩子多分支)
git钩子触发条件(git服务端钩子多分支)

报告为正常,可以正常提交。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/44952.html

(0)
nan
上一篇 2021-11-13
下一篇 2021-11-13

相关推荐

  • aspcms能实现什么(ASPCMS)

    aspcms能实现什么,ASPCMS内容导航:PCM复用设备的功能有哪些做企业网站dedecms织梦和ASPcms开源,谈谈这两款建ASP能做什么aspcms生成为什么首页没变动一、PCM复用设备的功能有哪些PCM设备功能主要分为四大部分:接入与复用、时隙交叉、2M线路保护、接口测试功能。接下来就由飞畅科技的小编来为大家详细介绍下PCM复用设备的功能,一起来看看吧!PCM复用功能:用户业务接

    2022-05-01
    0
  • 什么是PromQL,它在Prometheus系统中有什么作用

    PromQL是Prometheus Query Language的缩写,是一种用于查询和分析数据的语言,在Prometheus监控系统中被广泛使用。PromQL可以用于从Prometheus服务器的时间序列数据库中查询和筛选数据,执行聚合操作,计算数据的统计指标,生成报表等。它支持灵活的过滤和分组操作,可以帮助用户快速准确地找到他们需要的数据。通过使用PromQL,用户可以轻松地构建复杂的监控

    2024-03-05
    0
  • 荣耀x9如何设置杂志锁屏

    很多使用荣耀x9的用户发现锁屏会出现一些杂志的壁纸,想知道怎么来设置杂志壁纸,方法跟简单,只要在手机的设置中就可以来设置杂志壁纸了。荣耀x9如何设置杂志锁屏:1、首先打开手机设置,选择“桌面和壁纸”。2、进入“桌面和壁纸”,选择“杂志壁纸”。3、最后可以选择“开启杂志锁屏”,就可以打开杂志锁屏或者关闭。

    2024-02-02
    0
  • Maven中怎么生成Java文档

    要在Maven中生成Java文档,可以使用Maven插件中的maven-javadoc-plugin。以下是一个简单的配置示例:org.apache.maven.pluginsmaven-javadoc-plugin3.3.0</version

    2024-04-09
    0
  • 如何进行网页标题的优化(网页标题优化的五个方面)

    如何进行网页标题的优化,网页标题优化的五个方面内容导航:如何对网站标题进行优化网站名称与标题如何优化怎样对标题进行优化求解答浅谈如何进行网站标题优化一、如何对网站标题进行优化标签也叫做标题标签,也就是网站的题目。标题标签的优化是网站优化中最重要的内容之一,就像是一篇文章的题目一样。对页面相关性产生决定性的影响。大多数搜索引擎都是提取网页标题中的全部或部分内容作

    2022-04-29
    0
  • 如何自建公司网站(怎么建公司网站)

    如何自建公司网站,怎么建公司网站内容导航:做网站需要注册一个公司吗怎样建立自己的公司网站如何创建免费企业网站自建的网站和购买的网站有什么区一、做网站需要注册一个公司吗你好,网站建设是不需要注册一个公司的!但是网站运营的时候,需要看你的运营资质,比如像电商网站的话需要商品销售许可证。如果你只是建设个人网站博客之类的是不需要注册公司的,个人信息就可以完成网站备案等。但是个人网站在

    2022-05-16
    0

发表回复

登录后才能评论