- sonar是一款靜態(tài)代碼質(zhì)量分析工具,支持Java、Python、PHP、JavaScript、CSS等25種以上的語(yǔ)言.
- 而且能夠集成在IDE、Jenkins、Git等服務(wù)中,方便隨時(shí)查看代碼質(zhì)量分析報(bào)告.
- sonar通過(guò)配置的代碼分析規(guī)則,從可靠性、安全性、可維護(hù)性、覆蓋率、重復(fù)率等方面分析項(xiàng)目,風(fēng)險(xiǎn)等級(jí)從A~E劃- 分為5個(gè)等級(jí);
- sonar設(shè)置了質(zhì)量門,通過(guò)設(shè)置的質(zhì)量門評(píng)定此次提交分析的項(xiàng)目代碼是否達(dá)到了規(guī)定的要求;
- sonar可以集成pmd、findbugs、checkstyle等插件來(lái)擴(kuò)展使用其他規(guī)則來(lái)檢驗(yàn)代碼質(zhì)量;
系統(tǒng)構(gòu)成
SonarQube平臺(tái)主要有以下四個(gè)組件構(gòu)成:
1.SonarQube服務(wù)器
一臺(tái)SonarQube Server啟動(dòng)3個(gè)主要組成部分:
- Web服務(wù)器,供開(kāi)發(fā)人員,管理人員瀏覽高質(zhì)量的快照并配置SonarQube實(shí)例
- 基于Elasticsearch的Search Server從UI進(jìn)行后退搜索
- Compute Engine服務(wù)器,負(fù)責(zé)處理代碼分析報(bào)告并將其保存在SonarQube數(shù)據(jù)庫(kù)中
2.一個(gè)SonarQube數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)
SonarQube實(shí)例的配置(安全性,插件設(shè)置等), 以及項(xiàng)目,視圖等的質(zhì)量快照。
3.多個(gè)插件
服務(wù)器上安裝了多個(gè)SonarQube插件,可能包括語(yǔ)言,SCM,集成,身份驗(yàn)證和管理插件
4.一個(gè)或多個(gè)SonarQube Scanners
可以與CI服務(wù)進(jìn)行集成,在構(gòu)建/持續(xù)集成服務(wù)器上運(yùn)行一個(gè)或多個(gè)SonarScanner以分析項(xiàng)目;
使用流程
1.開(kāi)發(fā)人員的代碼在自己的IDE和使用SonarLint運(yùn)行局部分析。
2.開(kāi)發(fā)人員推他們的代碼到自己喜愛(ài)的供應(yīng)鏈管理:SCM,SVN,TFVC,...
3.持續(xù)集成服務(wù)器觸發(fā)自動(dòng)構(gòu)建和SonarQube掃描儀的運(yùn)行SonarQube分析所需的執(zhí)行。
4.分析報(bào)告被發(fā)送到SonarQube服務(wù)器進(jìn)行處理。
5.SonarQube服務(wù)器處理和存儲(chǔ)分析報(bào)告導(dǎo)致SonarQube數(shù)據(jù)庫(kù),并顯示結(jié)果在UI中。
6.開(kāi)發(fā)者審核,評(píng)論,挑戰(zhàn)他們的管理,并通過(guò)SonarQube UI減少他們的技術(shù)債務(wù)問(wèn)題。
7.經(jīng)理收到的分析報(bào)告。 OPS使用API從SonarQube自動(dòng)化配置和提取數(shù)據(jù)。 OPS使用JMX來(lái)監(jiān)控SonarQube服務(wù)器。
安裝極其使用
SonarQube是管理代碼質(zhì)量一個(gè)開(kāi)放平臺(tái),可以快速的定位代碼中潛在的或者明顯的錯(cuò)誤,下面將會(huì)介紹一下這個(gè)工具的安裝、配置以及使用。
準(zhǔn)備工作
1、jdk
2、sonarqube:http://www.sonarqube.org/downloads/
3、SonarQube+Scanner:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.5.zip
4、mysql數(shù)據(jù)庫(kù)
安裝
- 1.下載好sonarqube后,解壓打開(kāi)bin目錄,啟動(dòng)相應(yīng)OS目錄下的StartSonar。如本文演示使用的是win的64位系統(tǒng),則打開(kāi)D:\sonar\sonarqube-5.3\sonarqube-5.3\bin\windows-x86-64\StartSonar.bat
- 2.啟動(dòng)瀏覽器,訪問(wèn)http://localhost:9000,如出現(xiàn)下圖則表示安裝成功。
image.png
配置
1.打開(kāi)mysql,新建一個(gè)數(shù)據(jù)庫(kù)。
2.打開(kāi)sonarqube安裝目錄下的D:\sonar\sonarqube-5.3\sonarqube-5.3\conf\sonar.properties文件
3.在mysql5.X節(jié)點(diǎn)下輸入以下信息
#數(shù)據(jù)庫(kù)連接地址
sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=gmsd #數(shù)據(jù)庫(kù)用戶名
sonar.jdbc.password=gmsdtrade #數(shù)據(jù)庫(kù)密碼
sonar.sorceEncoding=UTF-8
sonar.login=admin #sonarqube的登錄名
sonar.password=admin #sonarqube的密碼
4.重啟sonarqube服務(wù),再次訪問(wèn)http://localhost:9000,會(huì)稍微有點(diǎn)慢,因?yàn)橐跏蓟瘮?shù)據(jù)庫(kù)信息
5.數(shù)據(jù)庫(kù)初始化成功后,登錄
6.按照下圖的點(diǎn)擊順序,進(jìn)入插件安裝頁(yè)面

7.搜索chinese Pack,安裝中文語(yǔ)言包
8.安裝成功后,重啟sonarqube服務(wù),再次訪問(wèn)http://localhost:9000/,即可看到中文界面

本地使用
1.打開(kāi)D:\sonar\sonar-scanner-2.5\conf\sonar-runner.properties文件
2.mysql節(jié)點(diǎn)下輸入以下信息
sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=gmsd
注意:如果測(cè)試項(xiàng)目與服務(wù)器不在同一臺(tái)機(jī)子,則需要添加服務(wù)器的IP:
#----- Default SonarQube server
sonar.host.url=http://XXX.XXX.XXX.XXX:9000[/code]
3.配置環(huán)境變量
a.新建變量,name=SONAR_RUNNER_HOME。value=D:\sonar\sonar-scanner-2.5
b.打開(kāi)path,輸入%SONAR_RUNNER_HOME%\bin;
c.sonar-runner -version,出現(xiàn)以下信息,則表示環(huán)境變量設(shè)置成功

4.打開(kāi)要進(jìn)行代碼分析的項(xiàng)目根目錄,新建sonar-project.properties文件
5.輸入以下信息
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=apiautocore
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=src
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
#其中:projectName是項(xiàng)目名字,sources是源文件所在的目錄
6.設(shè)置成功后,啟動(dòng)sonarqube服務(wù),并啟動(dòng)cmd
7.在cmd進(jìn)入項(xiàng)目所在的根目錄,輸入命令:sonar-runner,分析成功后會(huì)出現(xiàn)下圖

8.打開(kāi)http://localhost:9000/,我們會(huì)看到主頁(yè)出現(xiàn)了分析項(xiàng)目的概要圖

9.我們點(diǎn)擊項(xiàng)目,選擇問(wèn)題鏈接,會(huì)看到分析代碼的bug,哇,好多

10.選擇一個(gè)最嚴(yán)重的bug,看看

原來(lái)是這個(gè)地方會(huì)出現(xiàn)空指針異常,原因是我沒(méi)有進(jìn)行初始化就使用這個(gè)變量了。Over
官網(wǎng)學(xué)習(xí):
http://www.sonarqube.org/
http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner
