天天看點

Java代碼品質監控工具Sonar安裝1.  代碼品質七宗罪2.  安裝Sonar伺服器3.  利用maven向sonar伺服器送出分析任務

1.  代碼品質七宗罪

Sonar是一個代碼品質管理系統,它的幫助文檔開篇明義,提出了代碼品質的七宗罪,總結的比較到位,不妨一看:

1.        Bug和隐藏Bug(Bugs and Potential Bugs)

2.        違反編碼規範(Coding Standards Breach)

3.        複制粘貼(Duplications)

4.        缺乏單元測試(Lack of Unit Tests)

5.        惡劣的複雜度分布(Bad Distribution of Complexity)

6.        意大利面式設計(Spaghetti Design)

7.        注釋不足或過多(Not Enough or Too Many Comments)

2.  安裝Sonar伺服器

首先看一下sonar對安裝環境的需求,見文檔:

http://docs.codehaus.org/display/SONAR/Requirements

2.1. 安裝JRE

不再詳述。

2.2. 安裝資料庫

Sonar支援MySQL、Oracle、PostgreSQL、SQL Server等多種資料庫,本文選取MySQL。

參考文檔:http://docs.codehaus.org/display/SONAR/Installing

2.3. 配置資料庫

Sonar啟動前需要資料庫中有特定的使用者名和資料庫。以下為MySQL的配置腳本。

# https://github.com/SonarSource/sonar-examples/tree/master/scripts/database/mysql

#Create SonarQubedatabase and user.

#

# Command: mysql-u root-p < create_database.sql
#
CREATE DATABASE sonarCHARACTER SET utf8COLLATE utf8_general_ci;
CREATE USER'sonar' IDENTIFIED BY'sonar';
GRANT ALL ON sonar.* TO'sonar'@'%' IDENTIFIED BY'sonar';
GRANT ALL ON sonar.* TO'sonar'@'localhost' IDENTIFIED BY'sonar';
FLUSH PRIVILEGES;

2.4. 下載下傳并配置sonar

本文下載下傳的是SonarQube 3.7.4 LTS,不需要下載下傳其他工具。

修改sonar-3.7.4/conf/sonar.properties檔案中的sonar.jdbc.url、sonar.jdbc.username和sonar.jdbc.password屬性,具體要參照前面mysql伺服器的配置。

本文中設定的值是:

sonar.jdbc.username:                       sonar

sonar.jdbc.password:                       sonar

sonar.jdbc.url:   jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8

sonar.properties配置檔案還可以設定其他項,比如HTTP監聽端口,暫時保持預設。

2.5. 啟動sonar伺服器

執行sonar-3.7.4/bin/目錄下指定作業系統的腳本,啟動sonar。

Sonar啟動後:

(1)會連接配接mysql伺服器,并在sonar資料庫中建立相關的表格;

(2)啟動一個http伺服器,監聽端口為9000,當然這個端口号是可以配置的。

當然,Sonar也可以作為服務安裝到作業系統中,本文不再描述。

2.6. 登入伺服器

通過浏覽器登入sonar伺服器,可以對sonar進行配置、安裝插件等。

URL位址預設是http://{sonar_server_ip}:9000。

預設的使用者名和密碼是admin/admin。

本文保持sonar的預設配置。

3.  利用maven向sonar伺服器送出分析任務

可以有多種方法向sonar送出分析任務,本文利用maven。注意sonar 3.7.4隻支援maven3.1版本。

3.1. 修改maven的settings.xml檔案。

參考文檔:http://docs.codehaus.org/display/SONAR/Installing+and+Configuring+Maven

<profile>

      <properties>

        <sonar.jdbc.url>jdbc:mysql://192.168.150.11:3306/sonar?useUnicode=true&amp;characterEncoding=utf8</sonar.jdbc.url>

        <sonar.jdbc.username>sonar</sonar.jdbc.username>

        <sonar.jdbc.password>sonar</sonar.jdbc.password>

        <sonar.host.url>http://192.168.150.11:9000</sonar.host.url>

      </properties>

    </profile>

  </profiles>

3.2. 修改pom.xml檔案,以增加mysql驅動

<build>

    <extensions>

            <extension>

                    <groupId>mysql</groupId>

                    <artifactId>mysql-connector-java</artifactId>

                    <version>5.1.24</version>

            </extension>

        </extensions>

    </build>

3.3. 送出分析任務

參考文檔:http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven

執行以下maven指令:

mvn clean install

mvn sonar:sonar

注意sonar:sonar必須單獨執行。如果把sonar:sonar和其他target混在一起,比如mvn clean install sonar:sonar,可能導緻不可預期的問題。

3.4. 檢視分析結果

通過浏覽器登入sonar伺服器,檢視分析結果。