一牵敷、簡介
SonarQube是一個用于代碼質(zhì)量管理的開源平臺胡岔,用于管理多源代碼的質(zhì)量,目前支持Java枷餐、JS靶瘸、PHP、Python、C等25+語言怨咪。
通過插件機制屋剑,Sonar 可以集成不同的測試工具,代碼分析工具诗眨,以及持續(xù)集成工具唉匾,比如findbugs、Jenkins匠楚。通過不同的插件對這些結(jié)果進行再加工處理巍膘,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對不同規(guī)模和種類的工程進行代碼質(zhì)量管理芋簿。
簡單來說峡懈,SonarQube是一個質(zhì)量平臺,用于收集質(zhì)量數(shù)據(jù)(代碼掃描結(jié)果益咬、測試覆蓋率等)逮诲,并對數(shù)據(jù)進行各維度的統(tǒng)計分析帜平。
而代碼分析(也就是得到質(zhì)量數(shù)據(jù)的過程)幽告,需要用到Sonar的客戶端(或插件)。下面就簡單介紹一下sonar客戶端(插件)的使用裆甩。
Sonar的客戶端共有四種:
- Sonar-Scanner冗锁。一個獨立的掃描器,通過簡單的命令就能對項目進行靜態(tài)掃描嗤栓,并將掃描結(jié)果上傳至SonarQube冻河。
- sonar maven插件。一個maven插件茉帅,能通過maven命令執(zhí)行靜態(tài)掃描叨叙。
- sonar ant插件。ant上的插件堪澎。
- sonar IDE插件擂错。可以直接集成到IDE中(比如IntelliJ)樱蛤。
以下主要介紹前兩種的用法钮呀。
二、Sonar-Scanner的使用
1. 下載Sonar-Scanner包昨凡,并解壓爽醋。(需要注意的是,Sonar-Scanner版本與SonarQube存在版本兼容性便脊,若不兼容會有相應的報錯提示)
2. 將Sonar-Scanner目錄/bin
路徑加入環(huán)境變量蚂四。
3. 編輯Sonar-Scanner目錄/conf/sonar-runner.properties
文件,如下所示,填寫SonarQube的相關信息(安照實際情況填寫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. 在需要掃描的項目根目錄遂赠,新建一個文件sonar-project.properties
田度,文件中填入以下必要信息:
# 需要掃描的源代碼目錄
sonar.sources=src
# 項目的Key,可任意解愤,必須唯一
sonar.projectKey=org.sonarqube.demo
# 項目在SonarQube上顯示的名稱
sonar.projectName=php demo
# 項目版本
sonar.projectVersion=1.0
# 掃描的語言
sonar.language=php
備注1:還可以填寫其它參數(shù)镇饺,詳細見官方文檔。
備注2:在Jenkins中送讲,可以通過sonar插件配置以上數(shù)據(jù)奸笤,可免去在項目中配置該文件。
5. 打開終端哼鬓,進入項目根目錄监右,mac下執(zhí)行sonar-runner
,windows下執(zhí)行sonar-runner.bat
命令即可异希。
掃描成功后健盒,數(shù)據(jù)會自動上傳到SonarQube。
三称簿、Maven中Sonar的使用
1. 打開"maven安裝目錄/conf/settings.xml"扣癣,在<profiles></profiles>標簽中增加以下配置信息(安照實際情況填寫url、賬號等):
<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>