Jenkins集成SonarQube 實現構建項目同時審查代碼

軟件版本:java

     SonarQube:7.7    git

     Jenkins:2.164.3github

 

1、簡介

     SonarQube是一個開源的代碼質量分析平臺,便於管理代碼的質量,可檢查出項目代碼的漏洞和潛在的邏輯問題。同時,它提供了豐富的插件,支持多種語言的檢測, 如 Java、Python、Groovy、C#、C、C++等幾十種編程語言的檢測。sql

    核心價值觀:docker

  • 檢查代碼是否遵循編程標準:如命名規範,編寫的規範等。

  • 檢查設計存在的潛在缺陷:SonarQube經過插件Findbugs、Checkstyle等工具檢測代碼存在的缺陷。

  • 檢測代碼的重複代碼量:SonarQube能夠展現項目中存在大量複製粘貼的代碼。

  • 檢測代碼中註釋的程度:源碼註釋過多或者太少都很差,影響程序的可讀可理解性。

  • 檢測代碼中包、類之間的關係:分析類之間的關係是否合理,複雜度狀況。

 

SonarQube主要由4個組件組成:

 

  1. 一個SonarQube服務器啓動3個主要流程:數據庫

    • Web服務器,供開發人員,管理人員瀏覽高質量快照並配置SonarQube實例
    • 基於Elasticsearch的Search Server從UI返回搜索
    • 計算引擎服務器負責處理代碼分析報告並將其保存在SonarQube數據庫中
  2. 一個SonarQube數據庫存儲:編程

    • SonarQube實例的配置(安全性,插件設置等)
    • 項目,視圖等的質量快照
  3. 服務器上安裝了多個SonarQube插件,可能包括語言,SCM,集成,身份驗證和治理插件
  4. 在構建/持續集成服務器上運行一個或多個SonarScanner來分析項目

SonarQube工做流程:

 

2、安裝步驟

      好了,講了一堆概念開始進入正題了。安全

     1.安裝jenkins

       沒有安裝jenkins的能夠參考以前的文章。Linux -- 集成Jenkins服務器

     2.安裝SonarQube

        本文爲了方便測試使用Docker安裝SonarQube。編程語言

        運行SonarQube:

docker run -d --name sonarqube -p 9000:9000 sonarqube

      啓動後默認登陸帳號爲admin/admin。

 

      默認狀況下,鏡像將使用不適合生產的嵌入式H2數據庫。如須要設置數據庫請參考以下設置。

      生產數據庫被配置成與做爲環境變量如下SonarQube屬性:sonar.jdbc.usernamesonar.jdbc.passwordsonar.jdbc.url

$ docker run -d --name sonarqube \
    -p 9000:9000 \
    -e sonar.jdbc.username=sonar \
    -e sonar.jdbc.password=sonar \
    -e sonar.jdbc.url=jdbc:postgresql://localhost/sonar \
    sonarqube

 

       更多高級設置能夠參考文檔:Docker安裝SonarQube

     3.啓動SonarQube:

 

       安裝chiese Pack中文插件,安裝完記得點擊頁面上的Restart重啓SonarQube。

        而後重要的事情來了,就是配置質量閥。像咱們只想針對新提交的代碼進行審計,故定製以下質量閥指標:

 

          好了,到此基本配置完了。下面開始集成Jenkins

     4.集成Jenkins

         由於咱們是用Jenkins作爲後臺的持續掃描調度服務,因此須要安裝SonarQube Scanner For Jenkins插件,也就不須要安裝其餘的掃描器了。

          在Jenkins系統設置->配置SonarQube服務器鏈接詳細信息。

 

 

 

             構建項目:

    

sonar.projectKey=tembin_loan_test
sonar.projectName=tembin_loan_test
sonar.projectVersion=1.0
sonar.exclusions=*-ui/**

sonar.language=java
sonar.java.source=1.8
sonar.sourceEncoding=UTF-8

sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

 

 

                打開構建結果的連接來查看SonarQube具體的分析報告。

 

      5.質量閥狀態關聯構建結果

         

             咱們須要在代碼分析沒法知足SonarQube的質量標準時,就項目構建失敗。Jenkins是支持這樣的,須要安裝插件Sonar Quality Gates Plugin

      

            同時在系統設置->配置Quality Gates - Sonarqube。

           

 

          而後,在項目工程中須要增長「構建後操做「。

    

 

 

 

   6.郵件通知commiter

            項目構建失敗時,郵件通知提交代碼的人。jenkins默認集成了一個挺好用的郵件插件Extended E-mail Notification。

            先進行全局設置,初始配置時建議勾選debug和watch,方便查看郵件是否發送成功。以下圖

 

  項目配置郵件插件:

  

 

選擇右下角高級設置

 

 

3、整合阿里Java開發規範(p3c-pmd)

sonar-pmd 3.2.0-SNAPSHOT 集成p3c-pmd 1.3.4-pmd6.10.0

 

編譯好的插件地址:sonar-pmd-plugin-3.2.0-SNAPSHOT.jar
提取碼:9a4i 

把sonar-pmd-plugin-3.2.0-SNAPSHOT.jar 更新到sonarqube服務器上sonarqube-7.7/extensions/plugins/sonar-pmd-plugin-3.2.0-SNAPSHOT.jar


更新後啓動sonarqube

 


 

4、參考資料 

       SonarQube官方文檔

       SonarQube插件下載地址

相關文章
相關標籤/搜索