標籤:java sonar maven mysql
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&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&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伺服器,查看分析結果。