SonarQube - 代碼靜態(tài)掃描利器

  • 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è)面

image.png

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

本地使用

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è)置成功

image.png

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)下圖

image.png

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

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

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

原來(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容