程式碼質量管理-Sonar 使用手冊
持續整合之程式碼質量管理-Sonar
簡介
Sonar是一個用於程式碼質量管理的開源平臺,用於管理Java原始碼的質量。通過外掛機制,Sonar 可以整合不同的測試工具,程式碼分析工具,以及持續整合工具,比如checkstyle、findbugs、Jenkins。通過不同的外掛對這些結果進行再加工處理,通過量化的方式度量程式碼質量的變化,從而可以方便地對不同規模和種類的工程進行程式碼質量管理。同時 Sonar 還對大量的持續整合工具提供了介面支援,可以很方便地在持續整合中使用 Sonar。此外,Sonar 的外掛還可以對 Java 以外的其他程式語言提供支援,對國際化以及報告文件化也有良好的支援。可以說是目前最強大的程式碼質量管理工具之一
Sonar 服務框架
sonar主要作用
· 檢查程式碼是否遵循程式設計標準:如命名規範,編寫的規範等。
· 檢查設計存在的潛在缺陷:SonarQub e 通過插件 F indbugs、Checkstyl e 等工具檢測程式碼存在的缺陷。
· 檢測程式碼的重複程式碼量:SonarQub e 可以展示專案中存在大量複製貼上的程式碼。
· 檢測程式碼中註釋的程度:原始碼註釋過多或者太少都不好,影響程式的可讀可理解性。
· 檢測程式碼中包、類之間的關係:分析類之間的關係是否合理,複雜度情況。
安裝啟動
配置資料庫
使用命令建立資料庫,名字為sonar:
CREATE DATABASE sonar CHARACTER SET utf8COLLATE utf8_general_ci
建立一個sonar使用者並把這個使用者的密碼設定為soanr:
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
將建立的sonar資料庫的所有許可權賦給第三步中建立的sonar使用者:
GRANT ALL ON sonar.* TO 'sonar'@'%'IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost'IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
下載和配置sonar
將下載好的sonarqube-7.0解壓到伺服器
修改配置檔案
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
選擇對應的啟動檔案,我的是Linux 64 所以啟動命令是 ./bin/linux-x86-64/sonar.sh start 這裡有個坑是,啟動需要es,es不能是root 使用者啟動,所以要切換一下使用者
啟動成功後訪問 9000埠即可
預設賬號為admin 密碼admin
Sonar漢化
下載完成將外掛放到
\extensions\plugins ,重啟sonar即可。
整合專案
使用maven 整合
修改專案pom檔案,如圖所示:
<!--https://mvnrepository.com/artifact/org.codehaus.sonar/sonar-maven-plugin -->
<dependency>
<groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>5.1</version>
</dependency>
修改Maven 的配置檔案 settings.xml 檔案,具體配置如下:
Maven 外掛會自動把所需資料(如單元測試結果、靜態檢測結果等)上傳到 Sonar 伺服器上
在專案裡執行命令 mvn sonar:sonar,將程式碼注入到Sonar中進行分析處理,並將處理結果以XML的形式儲存在資料庫中。
使用sonar-runner
使用sonar-runner分析專案非常方便,只要在專案工程目錄下新建sonar-project.properties檔案,內容大致如下:
#key和name保持一致且在sonar下唯一
sonar.projectKey=car_android
sonar.projectName=car_android
#工程版本
sonar.projectVersion=1.0
#原始碼目錄
sonar.sources=src
#分析的語言
sonar.language=java
#編碼
sonar.sourceEncoding=UTF-8
之後在cmd下進入工程目錄下執行:sonar-runner–X
執行最終結果顯示EXECUTIONSUCCESS即成功。稍候片刻開啟sonar檢視所有專案看到剛剛分析的專案。
Jenkins 與 SonarQube 整合外掛的安裝與配置
Jenkins 是一個支援自動化框架的伺服器,我們這裡不做詳細介紹。Jenkins 提供了相關的外掛,使得 SonarQube 可以很容易地整合。 登陸 jenkins,點選"系統管理"
搜尋安裝SonarQube外掛,安裝完成後,進入系統設定,配置 SonarQube Server 資訊
這裡有兩種方法使用 SonarQube Scanner 進行程式碼分析,第一種是使用構建後步驟,第二種是在構建的過程中增加 SonarQube Scanner 的步驟,下面我們來分別介紹這兩種方法。
自定義Sonar程式碼審查規則
官方外掛預設的規則是不夠的,或者說不一定適用於我們團隊自己的內部規範,因此,接下來來說說如何定製自己的審查規則。
Sonar擴充套件程式碼審查規則的方式有兩種:1,使用Java編寫Sonar外掛;2,在SonarQube介面直接新增XPath規則。