使用 Jenkins 与 Sonar 集成对代码进行持续检测

SonarQube 与 Jenkins 简介

  1. SonarQube是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测, 如 Java、Python、Groovy、C、C 等几十种编程语言的检测。它主要的核心价值体现在如下几个方面:
    * 检查代码是否遵循编程标准:如命名规范,编写的规范等。
    * 检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle等 工具检测代码存在的缺陷。
    * 检测代码的重复代码量:SonarQube可以展示项目中存在大量复制粘贴的代码。
    * 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
    * 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。
  1. SonarQube 平台是由4个部分组成:
    * SonarQube Server
    * SonarQube Database
    * SonarQube Plugins
    * SonarQube Scanner

Jenkins 与 SonarQube 集成插件的安装与配置

Jenkins 是一个支持自动化框架的服务器,我们这里不做详细介绍。Jenkins 提供了相关的插件,使得 SonarQube 可以很容易地集成 。

  1. 登陆 jenkins,点击"系统管理",如图。
  2. Jenkins 管理插件
    ![](https://img-blog.csdnimg.cn/20191011103028140.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. Jenkins 安装 SonarQube 插件
    ![](https://img-blog.csdnimg.cn/20191011103028421.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 进入 Jenkins 系统管理 – 系统设置,配置 SonarQube Server 信息
    ![](https://img-blog.csdnimg.cn/20191011103028701.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 进入 Jenkins 系统管理 - Global Tool Configuration,配置 SonarQube Scanner
    ![](https://img-blog.csdnimg.cn/20191011103028923.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 新建 Jenkis 项目
    ![](https://img-blog.csdnimg.cn/20191011103029189.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 在 Jenkins 项目构建过程中加入 SonarScanner 进行代码分析
    首先需要在新建的 Jenkins 项目的构建环境标签页中勾选"Prepare SonarQube Scanner evironment"
    ![](https://img-blog.csdnimg.cn/20191011103029485.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 增加 Execute SonarQube Scanner 构建步骤
    ![](https://img-blog.csdnimg.cn/20191011103029756.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 配置 SonarQube Scanner 构建步骤,在 Task to run 输入框中输入 scan,即分析代码;在 JDK 选择框中选择 SonarQube Scanner 使用的 JDK(注意这里必须是 JDK 不能是 JRE);Path to project properties 是可选择的输入框,这里可以指定一个 sonar-project.properties 文件,如果不指定的话会使用项目默认的 properties 文件;Analysis properties 输入框,这里需要输入一些配置参数用来传递给 SonarQube,这里的参数优先级高于 sonar-project.properties 文件里面的参数,所以可以在这里来配置所有的参数以替代 sonar-project.properties 文件,下面列出了一些参数,sonar.language 指定了要分析的开发语言(特定的开发语言对应了特定的规则),sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录),sonar.java.binaries 定义了需要分析代码的编译后 class 文件位置;Additional arguments 输入框中可以输入一些附加的参数,示例中的-X 意思是进入 SonarQube Scanner 的 Debug 模式,这样会输出更多的日志信息;JVM Options 可以输入在执行 SonarQube Scanner 是需要的 JVM 参数
        sonar.projectKey=testSonar 
        sonar.projectName=testSonar 
        sonar.projectVersion=1.0 
        sonar.language=java 
        sonar.java.binaries=$WORKSPACE/testSonar/target/test-classes/ 
         sonar.sources=$WORKSPACE/testSonar/src
  1. 配置 Execute SonarQube Scanner 构建步骤
    ![](https://img-blog.csdnimg.cn/2019101110303010.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. Jenkins 项目构建结果
    ![](https://img-blog.csdnimg.cn/20191011103030338.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 分析结果报告
    ![](https://img-blog.csdnimg.cn/20191011103030570.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)
  1. 具体问题展示
    ![](https://img-blog.csdnimg.cn/20191011103031212.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yQ2hhbmdDaGFuZw==,size_16,color_FFFFFF,t_70)

参考资源

Jenkins 官网Sonarqube 官网

如感觉文章对你有所帮助,可以关注微信公众号鼓励一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值