1. 程式人生 > >程式碼質量管理工具SonarQube詳解

程式碼質量管理工具SonarQube詳解

SonarQube的目的是對軟體專案的程式碼進行分析,在開發人員提交程式碼之際就儘早發現程式碼的質量問題,並提示(或強制要求)開發人員改進。

SonarQube由以下幾個部分組成:

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

執行SonarQube Scanner啟動分析,就可以完成對專案程式碼的分析。

下面以Maven專案為例,詳細介紹用法:

對於Maven專案,除了使用上文提到的SonarQube Scanner進行分析之外,還可以使用maven-sonar-plugin外掛進行分析。使用maven-sonar-plugin外掛的步驟如下:

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>

2) 配置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>

3) 使用maven-sonar-plugin外掛以進行SonarQube分析
mvn clean verify sonar:sonar

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

4) 檢視分析結果

開啟SonarQube伺服器的主頁http://localhost:9000/