Windows系統配置SonarQube本地服務
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
下,重啟服務即可。