1.0? ?簡(jiǎn)介
? ? ? ?SonarQube是一款用于代碼質(zhì)量管理的開(kāi)源工具,它主要用于管理源代碼的質(zhì)量。通過(guò)插件形式,可以支持眾多計(jì)算機(jī)語(yǔ)言,截止至目前,最新版本已更新至8.9;
? ? ? ?基于上次安裝的SonarQube8.8,實(shí)際運(yùn)行中,公司絕大部分項(xiàng)目不支持運(yùn)行在java11上,在同一臺(tái)PC上跑項(xiàng)目和SonarQube相對(duì)來(lái)說(shuō)比較麻煩(需要更換jdk配置或者項(xiàng)目運(yùn)行配置),故部署SonarQube7.7,支持運(yùn)行于jdk1.8上;
? ? ? ?建議用電腦瀏覽器打開(kāi),效果較好。
2.0? ?環(huán)境
? ? ? ?JDK環(huán)境:java1.8、SonarQube7.7工具、漢化包1.25、sonar-scanner工具(代碼掃描工具)、npp編輯器、node.js、MySQL5.7、Navicat for MySQL等。
3.0? ?部署流程
3.1.1? ? JDK環(huán)境
3.1.1.1? ? 檢查當(dāng)前電腦JDK環(huán)境
? ? ? ?在電腦桌面的左下角的搜索中輸入“cmd”,回車后彈出命令提示符窗口,輸入java –version命令,查看當(dāng)前電腦是否安裝了jdk。

3.1.1.2? ? 安裝jdk
? ? ? ?這里介紹的是免安裝版的jdk1.8,解壓jdk壓縮包后,開(kāi)始配置java環(huán)境變量,右鍵我的電腦,點(diǎn)擊屬性,進(jìn)入系統(tǒng)的設(shè)置頁(yè)面后,點(diǎn)擊高級(jí)系統(tǒng)設(shè)置,點(diǎn)擊環(huán)境變量,進(jìn)行系統(tǒng)環(huán)境變量的編輯。

? ? ? ?新建環(huán)境變量,1.變量名:JAVA_HOME,變量值:jdk解壓縮地址;2.編輯變量path,新增值:jdk解壓縮地址\bin。


? ? ? ?環(huán)境變量配置完成后,進(jìn)入cmd命令,輸入java –version,出現(xiàn)下圖信息,即java1.8環(huán)境配置完成。

3.1.2? ? 數(shù)據(jù)庫(kù)配置
? ? ? ?SonarQube7.7需要連接對(duì)應(yīng)的MySQL數(shù)據(jù)庫(kù),MySQL安裝可以參考下方鏈接:
? ? ? ?https://blog.csdn.net/qq_39052339/article/details/99765471
? ? ? ?安裝完mysql后,可驗(yàn)證是否安裝成功,打開(kāi)cmd命令,輸入mysql –u root –p,輸入對(duì)應(yīng)的root用戶的密碼,登錄對(duì)應(yīng)的數(shù)據(jù)庫(kù)中。

3.1.2.1? ? MySQL配置(一)
? ? ? ?方法一:使用root登錄數(shù)據(jù)庫(kù)后,開(kāi)始數(shù)據(jù)庫(kù)配置。
? ? ? ?CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;? #創(chuàng)建sonar數(shù)據(jù)庫(kù)
? ? ? ?CREATE USER 'sonar' IDENTIFIED BY 'sonar';? #創(chuàng)建sonar用戶
? ? ? ?GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';? #sonar設(shè)置權(quán)限
? ? ? ?GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';? #給sonar設(shè)置對(duì)應(yīng)的密碼
? ? ? ?FLUSH PRIVILEGES;? #權(quán)限刷新
3.1.2.2? ? MySQL配置(二)
? ? ? ?方法二:解壓Navicat for MySQL,通過(guò)該數(shù)據(jù)庫(kù)管理工具來(lái)實(shí)現(xiàn)相關(guān)的數(shù)據(jù)庫(kù)配置:
? ? ? ?右鍵本地localhost連接,新建數(shù)據(jù)庫(kù),輸入數(shù)據(jù)庫(kù)名稱sonar,設(shè)置utf8字符集。

3.1.2.3? ? MySQL用戶、權(quán)限配置
? ? ? ?點(diǎn)擊上方的用戶,點(diǎn)擊新建用戶,輸入用戶名:sonar,主機(jī):localhost,密碼/確認(rèn)密碼:sonar,輸入完畢后,進(jìn)行保存。

? ? ? ?接下來(lái)設(shè)置對(duì)應(yīng)的權(quán)限,點(diǎn)擊權(quán)限管理員,選擇sonar數(shù)據(jù)庫(kù),進(jìn)行權(quán)限添加操作,勾選sonar數(shù)據(jù)庫(kù),勾選授予右側(cè)所有權(quán)限,勾選完畢后點(diǎn)擊確定,完成權(quán)限配置。



3.1.3? ? SonarQube7.7部署漢化
3.1.3.1? ? 配置SonarQube環(huán)境變量
? ? ? ?解壓SonarQube7.7壓縮包后,開(kāi)始配置環(huán)境變量,編輯變量path,新增值:SonarQube解壓地址\bin。

3.1.3.2? ? 啟動(dòng)SonarQube
? ? ? ?進(jìn)入解壓后的bin目錄,點(diǎn)擊windows-x86-64,雙擊StartSonar.bat,啟動(dòng)服務(wù)。(① 如果期間有彈出相關(guān)的防火墻提示,選中允許即可;② 啟動(dòng)服務(wù)后,即使關(guān)閉運(yùn)行窗口,服務(wù)仍開(kāi)著,如需關(guān)閉整個(gè)服務(wù),需要去任務(wù)管理器關(guān)閉對(duì)應(yīng)進(jìn)程)

? ? ? ?啟動(dòng)完成后,在瀏覽器輸入http://localhost:9000,會(huì)進(jìn)入如下頁(yè)面,默認(rèn)賬號(hào)密碼均為admin。(如果提示修改密碼,按照提示修改即可)

3.1.3.3? ? SonarQube漢化
? ? ? ?首先要知道獲取到對(duì)應(yīng)SonarQube版本的漢化包,訪問(wèn)下方鏈接,https://github.com/xuhuisheng/sonar-l10n-zh,下拉頁(yè)面可查看對(duì)應(yīng)的版本信息。

? ? ? ?訪問(wèn)下方鏈接,下載對(duì)應(yīng)的jar包,修改鏈接后的1.27,可跳轉(zhuǎn)至其他版本;https://github.com/xuhuisheng/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.27。

? ? ? ?關(guān)閉SonarQube服務(wù)(快捷鍵Ctrl+Alt+Delete,打開(kāi)任務(wù)管理器,關(guān)閉對(duì)應(yīng)的服務(wù),見(jiàn)下圖),關(guān)閉后將漢化包置于下方文件夾中,重新啟動(dòng)SonarQube服務(wù),漢化完成。



?3.1.3.4? ?配置文件修改
? ? ? ?接下來(lái)進(jìn)行SonarQube配置,打開(kāi)解壓目錄,進(jìn)入\sonarqube-7.7\conf文件夾,修改sonar.properties配置文件。(在執(zhí)行該步驟前,先安裝npp.7.7.1.Installer.x64.exe,便于文件的編輯,雙擊該文件進(jìn)行安裝即可)


? ? ? ?源碼如下:
? ? ? ?#----- 連接數(shù)據(jù)庫(kù) ? ? ? ?sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar??useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false? ? ?? ??
? ? ? ?sonar.jdbc.username=sonar
? ? ? ?sonar.jdbc.password=sonar
? ? ? ?#-----Default source code encoding?
? ? ? ?sonar.sorceEncoding=UTF-8
? ? ? ?#-----SonarQube登錄的賬號(hào)密碼?
? ? ? ?sonar.login=admin
? ? ? ?sonar.password=admin
3.1.3.5? ?獲取相關(guān)項(xiàng)目的值(用于后續(xù)Sonar-Scanner的掃描)
? ? ? ?漢化完成后,進(jìn)入對(duì)應(yīng)的系統(tǒng)中,點(diǎn)擊右上角的“新建項(xiàng)目”,輸入對(duì)應(yīng)的項(xiàng)目名稱sonar-l10n-zh-master。(掃描項(xiàng)目源碼)


? ? ? ?設(shè)置成功后,即可創(chuàng)建對(duì)應(yīng)的令牌,令牌的值在后續(xù)的Sonar-Scanner中相關(guān)配置會(huì)用到,包括對(duì)應(yīng)的項(xiàng)目標(biāo)識(shí),令牌名稱輸入“admin”(名稱自己設(shè)置),點(diǎn)擊右側(cè)的“創(chuàng)建”按鈕,創(chuàng)建令牌完成,創(chuàng)建完畢后,復(fù)制下方的令牌的值,令牌值為隨機(jī)生成,故本安裝手冊(cè)中令牌值在新的部署環(huán)境中無(wú)效,不通用。


3.1.4? ? Sonar-Scanner配置
3.1.4.1? ? 配置環(huán)境變量
? ? ? ?解壓sonar-scanner壓縮包,解壓完成后,進(jìn)行環(huán)境變量配置,新建環(huán)境變量,1.變量名:SONAR_RUNNER_HOME,變量值:sonar-scanner解壓路徑;2.編輯變量path,新增值:%SONAR_RUNNER_HOME\bin 或sonar-scanner解壓路徑\bin。



? ? ? ?環(huán)境變量配置完成后,cmd命令,輸入sonar-scanner,回車,出現(xiàn)下方信息后,環(huán)境變量配置完成。

3.1.4.2? ? Sonar-Scanner配置
? ? ? ?接下來(lái)進(jìn)行sonar-scanner配置,打開(kāi)解壓目錄,進(jìn)入\sonar-scanner\conf文件夾,修改sonar-scanner.properties配置文件。


? ? ? ?源碼如下:
? ? ? ?#-----
? ? ? ?SonarQube服務(wù)的鏈接
? ? ? ?sonar.host.url=http://localhost:9000
? ? ? ?#-----
? ? ? ?SonarQube服務(wù)的令牌
? ? ? ?sonar.login=fb1d09769aea83e6057a6e0d053f2970e69913fb(該值需替換為3.1.2.4中的admin的值)
? ? ? ?#-----Default source code encoding
? ? ? ?sonar.sourceEncoding=UTF-8
3.1.4.3? ? 被測(cè)項(xiàng)目配置
? ? ? ?在被測(cè)項(xiàng)目的根目錄,添加sonar-project.properties配置文件,配置文件補(bǔ)充內(nèi)容如下。

? ? ? ?源碼如下:
? ? ? ?#------ 被檢測(cè)項(xiàng)目的名稱
? ? ? ?sonar.projectKey=sonar-l10n-zh-master
? ? ? ?sonar.projectName=sonar-l10n-zh-master
? ? ? ?#------ 被檢測(cè)源文件所在目錄,.代表的是當(dāng)前目錄
? ? ? ?sonar.sources=.
? ? ? ?sonar.java.binaries=./target/classes
? ? ? ??sonar.sourceEncoding=UTF-8
3.1.5? ? 代碼掃描
? ? ? ?進(jìn)入目標(biāo)代碼根目錄,點(diǎn)擊對(duì)應(yīng)的路徑,cmd進(jìn)入定位到當(dāng)前目錄,具體執(zhí)行步驟如下。


? ? ? ?輸入命令如下:sonar-scanner,進(jìn)行當(dāng)前代碼掃描操作。(注意:掃描前,需要開(kāi)啟SonarQube服務(wù),即雙擊StartSonar.bat進(jìn)行啟動(dòng),中途若彈出防火墻提示,允許即可)

? ? ? ?掃描完成后,自動(dòng)提交至SonarQube中對(duì)應(yīng)的項(xiàng)目中進(jìn)行后臺(tái)分析,分析后,即可查看對(duì)應(yīng)的報(bào)告信息,其他項(xiàng)目掃描也是按照這種方法。

