項目工程代碼質量檢測——SonarQube

SonarQube是什麼

SonarQube 是一個用於代碼質量管理的開源平臺,用於管理源代碼的質量。 通過插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種編程語言的代碼質量管理與檢測。Sonar 不僅提供了對 IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 這些工具裏聯機查看結果;同時 Sonar 還對大量的持續集成工具提供了接口支持,可以很方便地在持續集成中使用 Sonar。
Sonar可以從以下七個維度檢測代碼質量:
1、複雜度分佈(complexity):代碼複雜度過高將難以理解
2.、重複代碼(duplications):程序中包含大量複製、粘貼的代碼而導致代碼臃腫,sonar可以展示源碼中重複嚴重的地方
3、單元測試統計(unit tests):統計並展示單元測試覆蓋率,開發或測試可以清楚測試代碼的覆蓋情況
4、代碼規則檢查(coding rules):通過Findbugs,PMD,CheckStyle等檢查代碼是否符合規範
5、註釋率(comments):若代碼註釋過少,特別是人員變動後,其他人接手比較難接手;若過多,又不利於閱讀
6、潛在的Bug(potential bugs):通過Findbugs,PMD,CheckStyle等檢測潛在的bug
7、 結構與設計(architecture & design):找出循環,展示包與包、類與類之間的依賴、檢查程序之間耦合度
組件組成

1.sonarqube server :  他有三個程序分別是 webserver(配置和管理sonar) searchserver(搜索結果返回給sonarUI)  ComplateEngineserver(計算服務 將分析結果入庫)。

2.sonarqube db : 數據庫 存放配置。

3.sonarqube plugins: 插件增加功能。

4.sonar-scanner : 代碼掃描工具 可以有多個。![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200413145156472.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdW1pbmd6aGUx,size_16,color_FFFFFF,t_70)

爲什麼要在項目中使用SonarQube,最主要的原因就是提高代碼質量,瞭解自己在編碼過程中犯過的錯誤,讓自己的代碼更具有可讀性和維護性。
在這裏插入圖片描述工作流程:

上面的模式展示了SonarQube如何與其他ALM工具集成,以及使用SONARQUE的各種組件。

開發人員在IDE中編寫代碼,並使用SONARLILT來運行本地分析。

開發人員將他們的代碼推到他們最喜歡的SCM:Git,Svn,TFVC,…

連續集成服務器觸發自動構建,執行SONARQUE掃描器需要運行SONARQUE分析。

分析報告被髮送到SONARQUE服務器進行處理。

SONARQUE服務器在SONARQUE數據庫中處理和存儲分析報告結果,並將結果顯示在UI中。

開發人員審查、評論、挑戰他們的問題,通過SONARQUE UI管理和減少他們的技術債務。

管理者從分析中得到報告。

OPS使用API來自動配置並從SONARQUE中提取數據。

OPS使用JMX監控SONARQUBE服務器。
二.安裝SonarQube

  1. 環境準備:

(1)jdk

(2)sonarqube下載:https://www.sonarqube.org/downloads/

(3)sonar-scanner下載:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

(4)MySql數據庫

(5)操作系統:本次以windows環境爲例

2. 具體安裝與配置過程

(1)分別下載sonarqube和sonar-scanner安裝包到本地之後進行解壓

https://img2.sycdn.imooc.com/5c6e69af00018b1808340227.jpg
在SonarQube的下載頁面:https://www.sonarqube.org/downloads/,下載需要的版本
在這裏插入圖片描述

(2)啓動MySQL數據庫,創建sonar數據庫即可。
MySQL數據庫必須是InnoDB存儲引擎,不支持MyISAM

(3)進入sonarqube解壓縮之後的文件目錄中,進入conf文件下,找到sonar.properties文件,並向其中添加MySQL數據庫的連接配置信息如下:

sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin

(4)進入sonar-scanner解壓縮之後的文件目錄中,進入conf文件下,找到sonar-scanner.properties文件,並向其中添加MySQL數據庫的連接配置信息如下:

sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=root

(5)至此,Sonar的基本配置就已經完成了,啓動它

進入sonarqube解壓縮之後的文件目錄中,進入bin目錄下,找到相對應操作系統的啓動環境(StartSonar.bat)進行啓動服務。

我的windows64位系統,具體是:C:\soft\SonarQube\sonarqube-7.6\bin\windows-x86-64\StartSonar.bat,點擊執行StartSonar.bat文件啓動服務

(7)進入數據庫中,你會看到生成了大量的數據表,如下:
(8)在瀏覽器上訪問:http://localhost:9000,出現如下頁面信息,表示sonar安裝成功,
在這裏插入圖片描述點擊登錄進行登錄,賬戶:admin,密碼:admin,即可進入
配置完成後,重新啓動StartSonar.bat, 如果啓動不成功,可以結束Java™ Platform SE binary。
啓動成功的標誌,下述三項,缺一不可

sonarqube is up
localhost:9000 可以打開
數據庫中,生成了十幾張表

3. 啓動失敗及閃退問題

(1)如果在重啓StartSonar.bat服務的時候失敗了,你可以啓動進程管理器,關閉所有java.exe服務,然後再次啓動該服務即可

(2)如果出現啓動StartSonar.bat服務之後,過段時間服務閃退,你可以進入sonarqube解壓目錄下的logs文件下,查看web.log日誌查看出錯的日誌信息,進行解決。

三.使用SonarQube

  1. 配置sonar-scanner的環境變量

(1)windows環境下進入高級系統設置環境變量下進行配置,

新建環境變量:

變量名:SONAR_RUNNER_HOME

變量值:C:\soft\SonarQube\sonar-scanner-3.3.0.1492-windows (此處是你所下載的sonar-scanner解壓之後所在的文件)
2. 新建配置文件sonar-project.properties

打開要進行代碼分析的項目根目錄,新建sonar-project.properties文件
文件內容輸入如下信息:

 #projectKey是項目的唯一標識,不能出現重複,可隨意起
sonar.projectKey=項目標識,隨便起即可
# this is the name displayed in the SonarQube UI,不能是中文
sonar.projectName=你的項目名稱
# 項目的版本號
sonar.projectVersion=0.5
# 項目的代碼的編碼格式
sonar.sourceEndcoding=UTF-8
# 項目的語言
sonar.language=java
# 項目的源代碼目錄
sonar.sources=src
# 項目的編譯生成的class文件的所在目錄
sonar.java.binaries=target/test-classes
  1. 啓動StartSonar.bat服務,並以管理員的身份啓動一個cmd命令窗口,cd命令進入項目的根路徑下,執行命令:sonar-scanner,開始對你的代碼進行質量審覈。
  2. 之後訪問http://localhost:9000/, 並進行登錄admin/admin,即可查看代碼審查結果信息
    sonarqube
    在這裏插入圖片描述
    sonar用於進行代碼的質量分析

進行質量分析的操作步驟如下:

首先進入到sonar的主頁SonarQube,查看當前要分析的項目是否存在

如果當前的項目不存在,則可以進行項目的創建,創建的操作步驟如下

選擇創建新項目,設置項目的創建標誌以及顯示信息

點擊完設置以後,會有頁面創建令牌和配置當前項目的信息。由於以及進行過默認的令牌信息配置,故無需進行創建生成令牌,可以使用令牌10ac31fd0b091a4e9ee93e7351bc40f90f91acb3即可

在sonar頁面創建完項目以後,可在本地找到要進行分析的項目的代碼,然後再當前的項目中執行如下的命令

mvn sonar:sonar
-Dsonar.projectKey=zyzh-zz-financial
-Dsonar.host.url=http://192.168.30.217:9000
-Dsonar.login=10ac31fd0b091a4e9ee93e7351bc40f90f91acb3

其中-Dsonar.projectKey表示的是項目的標識,-Dsonar.host.url表示的是sonar的 地址,-Dsonar.login=10ac31fd0b091a4e9ee93e7351bc40f90f91acb3設置的sonar的令牌信息

執行完上述的命令以後,如無異常,則可以進入到sonar的首頁中,找到相應的項目名稱進入,即可查看當前項目的代碼質量分析結果

sonar集成jenkins

jenkins集成sonar,下載sonarQube

進入系統管理->系統設置->SonarQube servers 選擇Add SonarQube
填寫信息,
name:自定義即可
ServerUrl:sonar服務地址
Server authentication token:在sonar服務中生成的令牌token

在jenkins中新建job,首先需要配置從git倉庫中拉取代碼,選擇要分析的分支

設置執行的maven命令,如 選擇root Pom文件,設置執行mvn命令:clean package -Dmaven.test.skip=true

接下來選擇Additional Behaviours,新增post steps ,其他數值可以默認,Analysis properties設置如下的:
sonar.projectKey=zyzh-zz-backstage
sonar.projectName=zyzh-zz-backStage
sonar.peojectVersion=1.0
sonar.language=java
sonar.sources=$WORKSPACE/
sonar.java.binaries=$WORKSPACE/zyzh-zz-backStage-api/target/,$WORKSPACE/zyzh-zz-backStage-server/target/,$WORKSPACE/zyzh-zz-backStage-web/target/,$WORKSPACE/zyzh-zz-manage-web/target/

如果沒有在全局配置中配置令牌的話,則可以再上面的配置中加入下面的
sonar.login=10ac31fd0b091a4e9ee93e7351bc40f90f91acb3
當然也可以選擇login和pwd的方式
配置信息說明:

sonar.host.url    sonarqube的URL地址
sonar.login    sorna用戶名
sonar.password    指定sonar用戶的密碼
sonar.projectName    在sonar上顯示的項目名稱
sonar.projectVersion    在sonar上顯示的版本信息
sonar.projectKey    sonar的項目關鍵字
sonar.sources    包含pom.xml的maven項目相對目錄
sonar.java.binaries  java編譯後的文件目錄

設置完成以後,可以進行構建,查看構建的日誌記錄信息沒有異常即可。

idea結合sonarLint進行的代碼分析

idea結合sonar的話,可以下載sonarLint插件,操作步驟如下:

進入idea ,進入插件安裝,在插件市場中搜索sonarLint,點擊進行安裝後重啓idea;
配置sonarLint插件,設置settings中,查找到other settings,然後選擇sonarLint General Setting ,在右側的輸入
接下來輸入要連接的服務器的登錄信息,如輸入token或者是使用賬號和密碼的方式

配置當前的項目和sonar的關係,點擊進入設置settings->other settings->SonarLint Project Settings

Bind to Server 選擇剛纔配置的服務器信息。SonarQube project的選擇可以點擊Search in list查看sonar倉庫中配置的項目信息,完成選擇以後點擊ok即可

代碼分析,可以查看到當前的窗口中多了一個SonarLint的窗口(如無此窗口,可以點擊analysis菜單進行查找),在其中選擇report,點擊文件夾圖標,會彈窗提示,點擊process之後即可進行項目分析。

參考資料
1、官網文檔
2、最新版本說明
3、sonar的用法
4、sonal的概念與組件組成
5、sonarqube

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