1. 程式人生 > >程式碼質量管理-Sonar 使用手冊

程式碼質量管理-Sonar 使用手冊

持續整合之程式碼質量管理-Sonar

簡介

Sonar是一個用於程式碼質量管理的開源平臺,用於管理Java原始碼的質量。通過外掛機制,Sonar 可以整合不同的測試工具,程式碼分析工具,以及持續整合工具,比如checkstyle、findbugs、Jenkins。通過不同的外掛對這些結果進行再加工處理,通過量化的方式度量程式碼質量的變化,從而可以方便地對不同規模和種類的工程進行程式碼質量管理。同時 Sonar 還對大量的持續整合工具提供了介面支援,可以很方便地在持續整合中使用 Sonar。此外,Sonar 的外掛還可以對 Java 以外的其他程式語言提供支援,對國際化以及報告文件化也有良好的支援。可以說是目前最強大的程式碼質量管理工具之一

Sonar 服務框架


sonar主要作用

·        檢查程式碼是否遵循程式設計標準:如命名規範,編寫的規範等。

·        檢查設計存在的潛在缺陷:SonarQub e 過插 F indbugsCheckstyl 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規則。