Windows系統配置SonarQube本地服務
SonarQube簡介
SonarQube 是一個用於管理源代碼質量開放平臺,可以從多個維度檢測代碼質量,快速的定位代碼中潛在的或者明顯的 Bug、錯誤,提供重複代碼、編碼標準、單元測試、代碼覆蓋率、代碼複雜度、潛在Bug、註釋和軟件設計報告。支持包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多種編程語言的代碼質量管理與檢測。通過插件機制,SonarQube可以繼承不同的測試工具,代碼分析工具,以及持續集成工具。可與IDE(如:Eclipse、IDEA等)集成使用。
SonarQube 並不是簡單地直接將各種質量檢測工具(例如 FindBugs,PMD 等)的結果展現給客戶,而是通過不同的插件算法來對這些結果進行再加工,最終以量化的方式來衡量代碼質量,從而方便地對不同規模和種類的工程進行相應的代碼質量管理。更多相關介紹不在此贅述。
SonarQube架構
引用SonarQube官網提供的架構圖,
通過圖中描述整個SonarQube的分析分爲幾個部分:
- 待分析的項目源代碼
- SonarQube Scanner 源代碼分析工具
- SonarQube Server 提供服務,用來提供分析報表及解決方法
- SonarQube Database 相關分析數據的持久化存儲
本文則根據主要描述,記錄本地Windows下SonarQube Server及Databse的配置。主要環境如下:
- Windows 10
- SonarQube 6.7 LTS
- MySQL 5.7.21
- JDK1.8.0_152
- Maven 3.5.3
SonarQube服務環境配置
基本環境要求
本文使用的版本爲 SonarQube 6.7.5 LTS , 官方下載地址。安裝的基本要求如下:
- 運行SonarQube的唯一先決條件是在您的計算機上安裝Java(Oracle JRE 8或OpenJDK 8)
- SonarQube服務器需要至少2GB的RAM纔能有效運行
- 需要的磁盤空間量取決於使用SonarQube分析的代碼量
- MySQL 5.6 +,僅支持InnoDB存儲引擎,但不支持MyISAM
- 要獲得SonarQube提供的完整體驗,必須在瀏覽器中啓用JavaScript,IE11+,其他瀏覽器建議最新版本
更多環境要求,見官方文檔官方,詳見。
另,需要分析Maven項目時,需要本地下載配置Maven,版本Maven 3.0+。
SonarQube環境配置
官網下載SonarQube後,解壓到任意目錄(建議,非中文目錄),目錄結構大致如下:
各目錄作用如下:
- bin 此目錄放置各操作系統(LInux、Windows、MacOS)用於啓動 SonarQube 服務的工具、腳本;
- conf 此目錄存放SonarQube相關配置文件;
- data 此目錄包含嵌入式數據庫(H2數據庫引擎)的數據,建議只用於測試和演示;
- elasticsearch 此目錄放置elasticsearch檢索引擎相關內容;
- extensions 此目錄存放SonarQube的插件、 擴展jar 包;
- lib 此目錄存放SonarQube所依賴的 jar 包;
- logs 此目錄存放SonarQube相關日誌信息;
- tmp此目錄包含服務器所需的臨時數據,服務器啓動時不要清理;
- web 此目錄存放 SonarQube web 服務的靜態資源。
SonarQube服務數據庫配置
SonarQube 支持大多數主流關係型數據庫(例如 Microsoft SQL Server, MySQL, Oracle, PostgreSQL 等),默認使用H2數據庫,可以直接運行啓動,此處配置MySQL數據庫。
-
MySQL創建數據庫
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
-
分配用戶及權限
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連接的用戶名及密碼(此處爲上步創建的用戶):sonar.jdbc.username=sonar sonar.jdbc.password=sonar
搜索
MySQL 5.6 or greater
,配置數據庫鏈接 URL :sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
到此完成了 MySQL 的簡單配置
注意: SonarQube支持的爲InnoDB引擎,可以在MySQL配置文件內的 [mysqld] 下配置 default-storage-engine=INNODB
來實現創建的表默認使用 InnoDB 引擎。
啓動服務
在目錄 ..\sonarqube-6.7.5\bin\windows-x86-64
下,雙擊 StartSonar.bat
啓動服務,出現 [o.s.a.SchedulerImpl] Process[es] is up
提示時,表示 elasticsearch
啓動成功
此時,可以在瀏覽器內訪問 http://localhost:9000
來登陸SonarQube管理頁面 (注意,運行期間不要關閉命令行)
首次啓動時,會在配置MySQL數據庫內生成相關的表及初始化數據
到此SonarQube服務啓動成功,如想修改訪問端口等內容,在 ..\sonarqube-6.7.5\conf\sonar.properties
文件內修改。
在目錄 ..\sonarqube-6.7.5\bin\windows-x86-64
下可以看到多個bat批處理文件
- InstallNTService.bat 安裝sonarqube爲系統服務
- StartNTService.bat 啓動sonarqube系統服務
- StartSonar.bat 命令行啓sonarqube服務(關閉命令行即關閉服務)
- StopNTService.bat 停止sonarqube系統服務
- UninstallNTService.bat 卸載sonarqube系統服務
爲了方便,且防止命令行意外關閉導致服務停止等情況,可以通過管理員方式運行 InstallNTService.bat
,將SonarQube服務添加到系統服務中, 或使用 sc
命令自行添加。如出現服務添加到系統服務後,啓動立即停止的情況,則通過查看 ..\sonarqube-6.7.5\log
目錄下的日誌來查看問題,如無日誌,嘗試卸載服務,嘗試使用 sc
命令添加服務。更多 sc
命令內容參看百度百科
插件安裝
啓動服務後,可以在SonarQube管理頁面的應用市場內添加需要的插件,如漢化包、代碼分析插件:
- Chinese Pack 漢化包插件
- Findbugs
- Checkstyle
- PMD
服務頁面點擊登陸,輸入用戶名密碼 ,默認爲 admin / admin
, 默認密碼可以在 ..\sonarqube-6.7.5\conf\sonar.properties
文件內修改。
首次登陸賬號,會提示配置分析的項目及token,可跳過
配置完成後,點擊 Finish..
,進入操作頁面
下面安裝 Chinese Pack (漢化包)
,演示插件安裝。
導航欄選擇 Administration
跳轉到Administration頁面,選擇 Marketplace
進入應用市場
安裝完成後,出現類似如下提示,點擊 restart
重啓服務即可
等待幾秒鐘,服務會自動重啓,重新登錄後,可以看到漢化結果
其他插件安裝類似如上操作,根據需要選擇安裝即可。
安裝相關問題記錄及處理
啓動服務時,提示 “Unable to start JVM”
出現類似提示時,可以嘗試在文件 ..\sonarqube-6.7.5\conf\wrapper.conf
中添加Java JDK的路徑,一般正常配置了Java環境變量,此處不需要配置。
啓動服務時,提示“另一個程序正在使用此文件,進程無法訪問。”
啓動服務時,出現類似提示,是由於 Java(TM) Platform SE binary
此後臺進程沒有關閉,導致jar包被加載佔用,無法訪問。
此時使用任務管理器,關閉對應進程即可。
漢化包插件安裝失敗
安裝漢化包,重啓後,一直重啓狀態,或出現其他錯誤提示,可以嘗試在 此處 下載對應SonarQube版本的漢化包,下載完成後,提取jar包,放置到目錄 ..\sonarqube-6.7.5\extensions\plugins
下,重啓服務即可。