一、簡(jiǎn)介
SonarQube是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái),用于管理多源代碼的質(zhì)量,目前支持Java、JS、PHP、Python、C等25+語言。
通過插件機(jī)制,Sonar 可以集成不同的測(cè)試工具,代碼分析工具,以及持續(xù)集成工具,比如findbugs、Jenkins。通過不同的插件對(duì)這些結(jié)果進(jìn)行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對(duì)不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。
簡(jiǎn)單來說,SonarQube是一個(gè)質(zhì)量平臺(tái),用于收集質(zhì)量數(shù)據(jù)(代碼掃描結(jié)果、測(cè)試覆蓋率等),并對(duì)數(shù)據(jù)進(jìn)行各維度的統(tǒng)計(jì)分析。
而代碼分析(也就是得到質(zhì)量數(shù)據(jù)的過程),需要用到Sonar的客戶端(或插件)。下面就簡(jiǎn)單介紹一下sonar客戶端(插件)的使用。
Sonar的客戶端共有四種:
- Sonar-Scanner。一個(gè)獨(dú)立的掃描器,通過簡(jiǎn)單的命令就能對(duì)項(xiàng)目進(jìn)行靜態(tài)掃描,并將掃描結(jié)果上傳至SonarQube。
- sonar maven插件。一個(gè)maven插件,能通過maven命令執(zhí)行靜態(tài)掃描。
- sonar ant插件。ant上的插件。
- sonar IDE插件??梢灾苯蛹傻絀DE中(比如IntelliJ)。
以下主要介紹前兩種的用法。
二、Sonar-Scanner的使用
1. 下載Sonar-Scanner包,并解壓。(需要注意的是,Sonar-Scanner版本與SonarQube存在版本兼容性,若不兼容會(huì)有相應(yīng)的報(bào)錯(cuò)提示)
2. 將Sonar-Scanner目錄/bin路徑加入環(huán)境變量。
3. 編輯Sonar-Scanner目錄/conf/sonar-runner.properties文件,如下所示,填寫SonarQube的相關(guān)信息(安照實(shí)際情況填寫url和login信息):
sonar.host.url=http://127.0.0.0:8090
#----- MySQL
sonar.jdbc.url=jdbc:mysql://127.0.0.0:3306/sonar?useUnicode=true&characterEncoding=utf8
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
#----- Security (when 'sonar.forceAuthentication' is set to 'true')
sonar.login=admin
sonar.password=admin
4. 在需要掃描的項(xiàng)目根目錄,新建一個(gè)文件sonar-project.properties,文件中填入以下必要信息:
# 需要掃描的源代碼目錄
sonar.sources=src
# 項(xiàng)目的Key,可任意,必須唯一
sonar.projectKey=org.sonarqube.demo
# 項(xiàng)目在SonarQube上顯示的名稱
sonar.projectName=php demo
# 項(xiàng)目版本
sonar.projectVersion=1.0
# 掃描的語言
sonar.language=php
備注1:還可以填寫其它參數(shù),詳細(xì)見官方文檔。
備注2:在Jenkins中,可以通過sonar插件配置以上數(shù)據(jù),可免去在項(xiàng)目中配置該文件。
5. 打開終端,進(jìn)入項(xiàng)目根目錄,mac下執(zhí)行sonar-runner,windows下執(zhí)行sonar-runner.bat命令即可。
掃描成功后,數(shù)據(jù)會(huì)自動(dòng)上傳到SonarQube。
三、Maven中Sonar的使用
1. 打開"maven安裝目錄/conf/settings.xml",在<profiles></profiles>標(biāo)簽中增加以下配置信息(安照實(shí)際情況填寫url、賬號(hào)等):
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>
jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8
</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.host.url>http://127.0.0.1:8090</sonar.host.url>
<sonar.login>admin</sonar.login>
<sonar.password>admin</sonar.password>
</properties>
</profile>
2. 在pom.xml中配置sonar插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.6</version>
</plugin>