Windows系統(tǒng)配置SonarQube本地服務(wù)
SonarQube簡介
SonarQube 是一個用于管理源代碼質(zhì)量開放平臺践樱,可以從多個維度檢測代碼質(zhì)量,快速的定位代碼中潛在的或者明顯的 Bug凸丸、錯誤拷邢,提供重復(fù)代碼、編碼標(biāo)準(zhǔn)屎慢、單元測試瞭稼、代碼覆蓋率、代碼復(fù)雜度腻惠、潛在Bug环肘、注釋和軟件設(shè)計報告。支持包括 Java集灌、Python悔雹、Php峻厚、C/C++侨把、C#、HTML情组、JavaScript续誉、PL/SQL莱没、Objective C 等二十多種編程語言的代碼質(zhì)量管理與檢測。通過插件機(jī)制酷鸦,SonarQube可以繼承不同的測試工具饰躲,代碼分析工具,以及持續(xù)集成工具臼隔∴诹眩可與IDE(如:Eclipse、IDEA等)集成使用摔握。
SonarQube 并不是簡單地直接將各種質(zhì)量檢測工具(例如 FindBugs寄狼,PMD 等)的結(jié)果展現(xiàn)給客戶,而是通過不同的插件算法來對這些結(jié)果進(jìn)行再加工,最終以量化的方式來衡量代碼質(zhì)量泊愧,從而方便地對不同規(guī)模和種類的工程進(jìn)行相應(yīng)的代碼質(zhì)量管理伊磺。更多相關(guān)介紹不在此贅述。
SonarQube架構(gòu)
引用SonarQube官網(wǎng)提供的架構(gòu)圖删咱,
通過圖中描述整個SonarQube的分析分為幾個部分:
- 待分析的項目源代碼
- SonarQube Scanner 源代碼分析工具
- SonarQube Server 提供服務(wù)屑埋,用來提供分析報表及解決方法
- SonarQube Database 相關(guān)分析數(shù)據(jù)的持久化存儲
本文則根據(jù)主要描述,記錄本地Windows下SonarQube Server及Databse的配置痰滋。主要環(huán)境如下:
- Windows 10
- SonarQube 6.7 LTS
- MySQL 5.7.21
- JDK1.8.0_152
- Maven 3.5.3
SonarQube服務(wù)環(huán)境配置
基本環(huán)境要求
本文使用的版本為 SonarQube 6.7.5 LTS , 官方下載地址摘能。安裝的基本要求如下:
- 運行SonarQube的唯一先決條件是在您的計算機(jī)上安裝Java(Oracle JRE 8或OpenJDK 8)
- SonarQube服務(wù)器需要至少2GB的RAM才能有效運行
- 需要的磁盤空間量取決于使用SonarQube分析的代碼量
- MySQL 5.6 +,僅支持InnoDB存儲引擎敲街,但不支持MyISAM
- 要獲得SonarQube提供的完整體驗团搞,必須在瀏覽器中啟用JavaScript,IE11+多艇,其他瀏覽器建議最新版本
更多環(huán)境要求逻恐,見官方文檔官方,詳見峻黍。
另梢莽,需要分析Maven項目時,需要本地下載配置Maven奸披,版本Maven 3.0+昏名。
SonarQube環(huán)境配置
官網(wǎng)下載SonarQube后,解壓到任意目錄(建議阵面,非中文目錄)轻局,目錄結(jié)構(gòu)大致如下:
各目錄作用如下:
- bin 此目錄放置各操作系統(tǒng)(LInux、Windows样刷、MacOS)用于啟動 SonarQube 服務(wù)的工具仑扑、腳本;
- conf 此目錄存放SonarQube相關(guān)配置文件置鼻;
- data 此目錄包含嵌入式數(shù)據(jù)庫(H2數(shù)據(jù)庫引擎)的數(shù)據(jù)镇饮,建議只用于測試和演示;
- elasticsearch 此目錄放置elasticsearch檢索引擎相關(guān)內(nèi)容箕母;
- extensions 此目錄存放SonarQube的插件储藐、 擴(kuò)展jar 包;
- lib 此目錄存放SonarQube所依賴的 jar 包嘶是;
- logs 此目錄存放SonarQube相關(guān)日志信息钙勃;
- tmp此目錄包含服務(wù)器所需的臨時數(shù)據(jù),服務(wù)器啟動時不要清理聂喇;
- web 此目錄存放 SonarQube web 服務(wù)的靜態(tài)資源辖源。
SonarQube服務(wù)數(shù)據(jù)庫配置
SonarQube 支持大多數(shù)主流關(guān)系型數(shù)據(jù)庫(例如 Microsoft SQL Server, MySQL, Oracle, PostgreSQL 等),默認(rèn)使用H2數(shù)據(jù)庫,可以直接運行啟動,此處配置MySQL數(shù)據(jù)庫克饶。
-
MySQL創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
-
分配用戶及權(quán)限
CREATE USER 'sonar' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; FLUSH PRIVILEGES;
-
修改SonarQube配置文件
找到..\sonarqube-6.7.5\conf
目錄下的sonar.properties
酝蜒,首先搜索# User credentials.
配置JDBC連接的用戶名及密碼(此處為上步創(chuàng)建的用戶):sonar.jdbc.username=sonar sonar.jdbc.password=sonar
搜索
MySQL 5.6 or greater
,配置數(shù)據(jù)庫鏈接 URL :sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
到此完成了 MySQL 的簡單配置
SonarQube 配置MySQL
注意: SonarQube支持的為InnoDB引擎矾湃,可以在MySQL配置文件內(nèi)的 [mysqld] 下配置 default-storage-engine=INNODB
來實現(xiàn)創(chuàng)建的表默認(rèn)使用 InnoDB 引擎秕硝。
啟動服務(wù)
在目錄 ..\sonarqube-6.7.5\bin\windows-x86-64
下,雙擊 StartSonar.bat
啟動服務(wù)洲尊,出現(xiàn) [o.s.a.SchedulerImpl] Process[es] is up
提示時,表示 elasticsearch
啟動成功
此時奈偏,可以在瀏覽器內(nèi)訪問 http://localhost:9000
來登陸SonarQube管理頁面 (注意坞嘀,運行期間不要關(guān)閉命令行)
首次啟動時,會在配置MySQL數(shù)據(jù)庫內(nèi)生成相關(guān)的表及初始化數(shù)據(jù)
到此SonarQube服務(wù)啟動成功惊来,如想修改訪問端口等內(nèi)容丽涩,在 ..\sonarqube-6.7.5\conf\sonar.properties
文件內(nèi)修改。
在目錄 ..\sonarqube-6.7.5\bin\windows-x86-64
下可以看到多個bat批處理文件
- InstallNTService.bat 安裝sonarqube為系統(tǒng)服務(wù)
- StartNTService.bat 啟動sonarqube系統(tǒng)服務(wù)
- StartSonar.bat 命令行啟sonarqube服務(wù)(關(guān)閉命令行即關(guān)閉服務(wù))
- StopNTService.bat 停止sonarqube系統(tǒng)服務(wù)
- UninstallNTService.bat 卸載sonarqube系統(tǒng)服務(wù)
為了方便裁蚁,且防止命令行意外關(guān)閉導(dǎo)致服務(wù)停止等情況矢渊,可以通過管理員方式運行 InstallNTService.bat
,將SonarQube服務(wù)添加到系統(tǒng)服務(wù)中枉证, 或使用 sc
命令自行添加矮男。如出現(xiàn)服務(wù)添加到系統(tǒng)服務(wù)后,啟動立即停止的情況室谚,則通過查看 ..\sonarqube-6.7.5\log
目錄下的日志來查看問題毡鉴,如無日志,嘗試卸載服務(wù)秒赤,嘗試使用 sc
命令添加服務(wù)猪瞬。更多 sc
命令內(nèi)容參看百度百科
插件安裝
啟動服務(wù)后,可以在SonarQube管理頁面的應(yīng)用市場內(nèi)添加需要的插件入篮,如漢化包陈瘦、代碼分析插件:
- Chinese Pack 漢化包插件
- Findbugs
- Checkstyle
- PMD
服務(wù)頁面點擊登陸,輸入用戶名密碼 潮售,默認(rèn)為 admin / admin
痊项, 默認(rèn)密碼可以在 ..\sonarqube-6.7.5\conf\sonar.properties
文件內(nèi)修改。
首次登陸賬號酥诽,會提示配置分析的項目及token线婚,可跳過
配置完成后,點擊 Finish..
盆均,進(jìn)入操作頁面
下面安裝 Chinese Pack (漢化包)
塞弊,演示插件安裝。
導(dǎo)航欄選擇 Administration
跳轉(zhuǎn)到Administration頁面,選擇 Marketplace
進(jìn)入應(yīng)用市場
安裝完成后游沿,出現(xiàn)類似如下提示饰抒,點擊 restart
重啟服務(wù)即可
等待幾秒鐘,服務(wù)會自動重啟诀黍,重新登錄后袋坑,可以看到漢化結(jié)果
其他插件安裝類似如上操作,根據(jù)需要選擇安裝即可眯勾。
安裝相關(guān)問題記錄及處理
啟動服務(wù)時枣宫,提示 “Unable to start JVM”
出現(xiàn)類似提示時,可以嘗試在文件 ..\sonarqube-6.7.5\conf\wrapper.conf
中添加Java JDK的路徑吃环,一般正常配置了Java環(huán)境變量也颤,此處不需要配置。
啟動服務(wù)時郁轻,提示“另一個程序正在使用此文件翅娶,進(jìn)程無法訪問『梦ǎ”
啟動服務(wù)時竭沫,出現(xiàn)類似提示,是由于 Java(TM) Platform SE binary
此后臺進(jìn)程沒有關(guān)閉骑篙,導(dǎo)致jar包被加載占用蜕提,無法訪問。
此時使用任務(wù)管理器靶端,關(guān)閉對應(yīng)進(jìn)程即可贯溅。
漢化包插件安裝失敗
安裝漢化包,重啟后躲查,一直重啟狀態(tài)它浅,或出現(xiàn)其他錯誤提示,可以嘗試在 此處 下載對應(yīng)SonarQube版本的漢化包镣煮,下載完成后姐霍,提取jar包,放置到目錄 ..\sonarqube-6.7.5\extensions\plugins
下典唇,重啟服務(wù)即可镊折。