代码质量管理:SonarQube + Jenkins Pipeline配置

简介: 前段时间对自己的项目进行代码质量扫描,曾经以为自己的代码质量算是不错的,结果发现一堆的bug或者smell code,灵魂受到1w点伤害。

前段时间对自己的项目进行代码质量扫描,曾经以为自己的代码质量算是不错的,结果发现一堆的bug或者smell code,灵魂受到1w点伤害。


可以想到,在时间紧、任务中的情况下,代码质量绝对是不能够保证的,虽然功能算是完整,但是可能就在某个隐藏的角落,就有无数的bug在潜伏着,所以有时间的话都对自己的代码进行代码质量检查吧。虽然不能保证有完美的代码,但是可以把bug数降低,也可以根据扫描的结果养成良好的编程习惯。


身为程序员就得严谨。


闲言碎语不再讲。


本文主要是介绍通过Jenkins Pipeline与SonarQube集成,对代码进行扫描,这里使用的是Jenkins2.19.1,SonarQube6.4。


1. 基础工作

1.1 安装插件

在Jenkins管理界面中的 系统管理->插件管理 安装最新的 SonarQube plugin 插件,并重启Jenkins:


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ANFkfLuY-1572081094426)(http://www.howardliu.cn/images/code_quality/jenkins_available-plugins_sonarqube.png)]


1.2 配置/安装SonarQube Scanner

等待重启之后,在 系统管理->Global Tool Configuration 中配置/安装最新的SonarQube Scanner:


image.png


可以选择自动安装,这样会在需要用到的时候自动从默认地址安装到默认路径,不需要手动其下载安装,非常方便。当然,也可以自己去网上下载,如果是自己下载的话,需要把自动安装的勾去掉,然后填上自己下载的SonarQube Scanner运行包路径:


image.png


1.3 配置SonarQube服务

因为SonarQube Scanner工具需要把扫描的代码及结果发送到SonarQube服务器上,所以需要配置SonarQube服务地址。


在 系统管理->系统设置 中增加 SonarQube servers 相关配置:


image.png


至此,基础配置工作就结束了,下面可以开始配置扫描任务了。


2. 配置待扫描项目

首先创建一个Jenkins Pipeline项目:

image.png



然后修改Pipeline脚本,比如:


node {
    stage('SCM') {
        git([url: 'https://github.com/howardliu-cn/cynomys.git'])
    }
    stage('SonarQube analysis') {
        def sonarqubeScannerHome = tool name: 'SonarQube Scanner'
        withSonarQubeEnv('SonarQube') {
            sh "${sonarqubeScannerHome}/bin/sonar-scanner"
        }
    }
}

如果需要指定从某个分支复制代码,可以增加branch参数;如果使用ssh方式复制代码,需要通过credentialsId参数配置Jenkins中配置好的秘钥ID。比如:


node {
    stage('SCM') {
        git([url: 'git@10.6.3.213:RD/messenger.git', branch: 'develop', credentialsId: 'fae8b1b9-8818-48e9-a28a-24b928015a6c'])
    }
    stage('SonarQube analysis') {
        def sonarqubeScannerHome = tool name: 'SonarQube Scanner'
        withSonarQubeEnv('SonarQube') {
            sh "${sonarqubeScannerHome}/bin/sonar-scanner"
        }
    }
}

这两种方式都需要在项目的根路径下面有一个sonar-project.properties文件,其内容如下:


# must be unique in a given SonarQube instance
sonar.projectKey=cynomys:0.0.1
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=cynomys
sonar.projectVersion=0.0.1
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.java.target=1.8
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

除了通过Pipeline的方式之外,还可以创建普通项目进行扫描,可以参考这里。


修改完成,保存,就可以开始扫描了。


3. 开始扫描

直接在项目页面点击立即构建,就会开始扫描。然后登录SonarQube服务,就能够看到代码质量检查的结果了。


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sIKLC4IU-1572081094428)(http://www.howardliu.cn/images/code_quality/sonarqube_dashboard_project.png)]


4. 个人建议

代码质量检查是非常必要的,可以在代码运行之前就可以找到很多bug

smell code虽然不影响运行,但是在某些情况下对代码的重构、复用、修改造成不必要的影响

工具只是工具,可以减少低效劳动,但是绝对不会是万能的

希望之后不会被吐槽是在写bug。。。

目录
相关文章
|
8月前
|
jenkins Shell 测试技术
|
8月前
|
安全 jenkins Java
Java、Python、C++支持jenkins和SonarQube(一)
Jenkins 是一个开源的 持续集成(CI)和持续交付(CD) 工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
503 5
|
8月前
|
jenkins Java Shell
Java、Python、C++支持jenkins和SonarQube(全集)
Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
747 1
|
8月前
|
jenkins Java 持续交付
Java、Python、C++支持Jenkins和SonarQube(三)
Python与Jenkins和SonarQube
417 1
|
8月前
|
jenkins Java 测试技术
|
11月前
|
Ubuntu jenkins 机器人
在Jenkins上配置触发Ubuntu环境的图形用户界面(GUI)构建任务。
以上,这趟融合了技术与艺术的Jenkins配置之旅就告一段落了。记住,技术应当像艺术一样有趣和生动,这样才能激发出最大的创新和效率。
366 2
|
安全 jenkins 持续交付
如何在 Jenkins 中配置邮件通知?
如何在 Jenkins 中配置邮件通知?
987 11
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
2026 1
|
jenkins Java 持续交付
Gitee+Jenkins+SonarQube代码上线的实战操作
通过以上步骤,就可以实现基于Gitee、Jenkins和SonarQube的代码上线流程,确保代码的质量和上线过程的自动化和可控性。在实际操作中,可以根据项目的具体需求和环境进行适当的调整和优化。
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
1321 1

推荐镜像

更多