代碼質量管理:SonarQube + Jenkins Pipeline配置

前段時間對自己的項目進行代碼質量掃描,曾經以爲自己的代碼質量算是不錯的,結果發現一堆的bug或者smell code,靈魂受到1w點傷害。

可以想到,在時間緊、任務中的情況下,代碼質量絕對是不能夠保證的,雖然功能算是完整,但是可能就在某個隱藏的角落,就有無數的bug在潛伏着,所以有時間的話都對自己的代碼進行代碼質量檢查吧。雖然不能保證有完美的代碼,但是可以把bug數降低,也可以根據掃描的結果養成良好的編程習慣。

身爲程序員就得嚴謹。

閒言碎語不再講。

本文主要是介紹通過Jenkins Pipeline與SonarQube集成,對代碼進行掃描,這裏使用的是Jenkins2.19.1,SonarQube6.4。

1. 基礎工作

1.1 安裝插件

在Jenkins管理界面中的 系統管理->插件管理 安裝最新的 SonarQube plugin 插件,並重啓Jenkins:

SonarQube plugin

1.2 配置/安裝SonarQube Scanner

等待重啓之後,在 系統管理->Global Tool Configuration 中配置/安裝最新的SonarQube Scanner:

SonarQube plugin

可以選擇自動安裝,這樣會在需要用到的時候自動從默認地址安裝到默認路徑,不需要手動其下載安裝,非常方便。當然,也可以自己去網上下載,如果是自己下載的話,需要把自動安裝的勾去掉,然後填上自己下載的SonarQube Scanner運行包路徑:

SonarQube plugin

1.3 配置SonarQube服務

因爲SonarQube Scanner工具需要把掃描的代碼及結果發送到SonarQube服務器上,所以需要配置SonarQube服務地址。

在 系統管理->系統設置 中增加 SonarQube servers 相關配置:

SonarQube plugin

至此,基礎配置工作就結束了,下面可以開始配置掃描任務了。

2. 配置待掃描項目

首先創建一個Jenkins Pipeline項目:

Pipeline Project

然後修改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: '[email protected]: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服務,就能夠看到代碼質量檢查的結果了。

SonarQube 項目 Dashboard頁面

4. 個人建議

  1. 代碼質量檢查是非常必要的,可以在代碼運行之前就可以找到很多bug
  2. smell code雖然不影響運行,但是在某些情況下對代碼的重構、複用、修改造成不必要的影響
  3. 工具只是工具,可以減少低效勞動,但是絕對不會是萬能的

希望之後不會被吐槽是在寫bug。。。


個人主頁: http://www.howardliu.cn

個人博文: 代碼質量管理:SonarQube + Jenkins Pipeline配置

CSDN主頁: http://blog.csdn.net/liuxinghao

CSDN博文: 代碼質量管理:SonarQube + Jenkins Pipeline配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章