天天看點

SonarQube 代碼品質管理平台

SonarQube 代碼品質管理平台

一、SonarQube 概念

SonarQube(sonar)是一個代碼品質管理平台。 SonarQube不隻是一個品質資料報告工具,更是代碼品質管理平台。 支援java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種程式設計語言的代碼品質管理與檢測。 SonarQube可以從以下七個次元檢測代碼品質,而作為開發人員至少需要處理前5種代碼品質問題。

(1) 不遵循代碼标準
SonarQube可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫。
(2) 潛在的缺陷
SonarQube可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。
(3) 糟糕的複雜度分布
檔案、類、方法等,如果複雜度過高将難以改變,這會使得開發人員 難以了解它們, 且如果沒有自動化的單元測試,對于程式中的任何元件的改變都将可能導緻需要全面的回歸測試。
(4) 重複
顯然程式中包含大量複制粘貼的代碼是品質低下的,SonarQube可以展示 源碼中重複嚴重的地方。
(5) 注釋不足或者過多
沒有注釋将使代碼可讀性變差,特别是當不可避免地出現人員變動時,程式的可讀性将大幅下降 而過多的注釋又會使得開發人員将精力過多地花費在閱讀注釋上,亦違背初衷。
(6) 缺乏單元測試
SonarQube可以很友善地統計并展示單元測試覆寫率。
(7) 糟糕的設計
通過SonarQube可以找出循環,展示包與包、類與類之間的互相依賴關系,可以檢測自定義的架構規則 通過SonarQube可以管理第三方的jar包,可以利用LCOM4檢測單個任務規則的應用情況, 檢測耦合。
           

二、SonarQube 下載下傳安裝

1、下載下傳

官網位址:http://www.sonarqube.org/downloads/

SonarQube 代碼品質管理平台

2、組成結構

1. SonarQube Platform,就是SonarQube伺服器,這是SonarQube運作的基礎。
首先下載下傳并解壓縮SonarQube的釋出軟體;
必要的情況下配置解壓縮目錄下的sonarqube/conf/sonar.properties檔案;
啟動SonarQube Platform:
    Windows下執行StartSonar.bat
    Linux下執行sonarqube/bin/sonar.sh start console
啟動成功,可以通路預設首頁http://localhost:9000/,登入的使用者名/密碼為admin/admin。
注意,在實驗驗證階段,SonarQube Platform預設使用H2資料庫;但是在生産環境中,還需要使用MySQL等其他企業級資料庫伺服器。 

2. SonarQube Scanner,即分析項目代碼的預設啟動器
首先下載下傳并解壓縮SonarQube Scanner;
必要情況下,配置檔案sonar-scanner/conf/sonar-scanner.properties;建議配置如下:
    每次送出前的分析,設定參數sonar.analysis.mode=preview
    每天都要執行的CI分析,設定參數sonar.analysis.mode=publish
啟動SonarQube Scanner:
    Windows下執行sonar-scanner.bat
    Linux下執行sonar-scanner/bin/sonar-scanner

3.分析項目
首先根據項目代碼的程式設計語言,線上安裝必要的SonarQube插件,以支援項目使用的程式設計語言;
然後,cd到要分析的項目目錄下,如some/projects/java/myproject/
在項目目錄下建立并配置sonar-project.properties檔案如下:  
sonar.projectKey=org.sonarqube:it-sonar-examples
sonar.projectName=IT Sonar Examples Quality
sonar.projectVersion=1.0
sonar.sources=.
sonar.sourceEncoding=UTF-8
sonar.language=text

           

3、啟動驗證

首先下載下傳并解壓縮SonarQube的釋出軟體;
必要的情況下配置解壓縮目錄下的sonarqube/conf/sonar.properties檔案;
啟動SonarQube Platform:
    Windows下執行StartSonar.bat
    Linux下執行sonarqube/bin/sonar.sh start console
    
注意: 在實驗驗證階段,SonarQube Platform預設使用H2資料庫;但是在生産環境中,還需要使用MySQL等其他企業級資料庫伺服器。 

           
SonarQube 代碼品質管理平台

三、SonarQube 配置使用

1、基礎配置

1.打開mysql,建立一個資料庫。
2.打開sonarqube安裝目錄下的D:\sonar\sonarqube-5.3\sonarqube-5.3\conf\sonar.properties檔案
3.在mysql5.X節點下輸入以下資訊
sonar.jdbc.url=jdbc:mysql://192.168.10.10:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance sonar.jdbc.username=dev sonar.jdbc.password=123456 sonar.sorceEncoding=UTF-8 sonar.login=admin sonar.password=admin
 
其中:url是資料庫連接配接位址,username是資料庫使用者名,jdbc.password是資料庫密碼,login是sonarqube的登入名,sonar.password是sonarqube的密碼
4.重新開機sonarqube服務,再次通路http://localhost:9000,會稍微有點慢,因為要初始化資料庫資訊,重新開機時候有可能一直卡在那裡,重新開機服務不生效,這時候可以重新開機電腦,然後再次通路http://localhost:9000,會發現配置生效。
5.資料庫初始化成功後,登入
6.按照下圖的點選順序,進入插件安裝頁面,搜尋框搜尋chinese,選擇中文包,安裝中文插件,安裝之後,會自動提醒重新開機服務,點選重新開機,重新開機完之後,重新整理,就看到中文版的頁面
           

2、使用配置

兩種方式:1.maven送出分析。2.idea插件

1.maven送出分析

  1. 配置Maven的settings.xml
<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>
           
  1. 配置Maven項目的pom.xml檔案
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.language>java</sonar.language>
  </properties>
  <build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>3.1.1</version>
      </plugin>
    </plugins>
  </pluginManagement>
</build>
           

2.idea插件

使用maven-sonar-plugin插件以進行SonarQube分析

mvn clean verify sonar:sonar

或mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.1.1:sonar

SonarQube 代碼品質管理平台

四、SonarQube 常用規則

很多規則,也可以自定義不在一一列舉。

sonar rule

SonarQube 代碼品質管理平台

參考:

SonarQube使用教程

代碼品質管理工具SonarQube詳解

SonarQube 代碼品質管理平台

sonar rule