1. 程式人生 > >Windows系統配置SonarQube本地服務

Windows系統配置SonarQube本地服務

Windows系統配置SonarQube本地服務

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的分析分為幾個部分:

  • 待分析的專案原始碼
  • 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後,解壓到任意目錄(建議,非中文目錄),目錄結構大致如下:

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資料庫。

  1. MySQL建立資料庫

    	CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
    
  2. 分配使用者及許可權

    	
         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;
    	 
    
  3. 修改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 配置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 啟動成功

SonarQube 服務啟動

此時,可以在瀏覽器內訪問 http://localhost:9000 來登陸SonarQube管理頁面 (注意,執行期間不要關閉命令列

enter description here

首次啟動時,會在配置MySQL資料庫內生成相關的表及初始化資料

SonarQube 資料庫初始化

到此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,可跳過

SonarQube 首次啟動配置

SonarQube 首次啟動配置2

配置完成後,點選 Finish..,進入操作頁面

SonarQube 操作頁面

下面安裝 Chinese Pack (漢化包),演示外掛安裝。

導航欄選擇 Administration跳轉到Administration頁面,選擇 Marketplace 進入應用市場

SonarQube 安裝漢化包

安裝完成後,出現類似如下提示,點選 restart 重啟服務即可

SonarQube 安裝完成提示

等待幾秒鐘,服務會自動重啟,重新登入後,可以看到漢化結果

SonarQube 漢化結果

其他外掛安裝類似如上操作,根據需要選擇安裝即可。


安裝相關問題記錄及處理

啟動服務時,提示 “Unable to start JVM”

出現類似提示時,可以嘗試在檔案 ..\sonarqube-6.7.5\conf\wrapper.conf 中新增Java JDK的路徑,一般正常配置了Java環境變數,此處不需要配置。

SonarQube Java JDK問題


啟動服務時,提示“另一個程式正在使用此檔案,程序無法訪問。”

啟動服務時,出現類似提示,是由於 Java(TM) Platform SE binary此後臺程序沒有關閉,導致jar包被載入佔用,無法訪問。

SonarQube Java後臺佔用

此時使用工作管理員,關閉對應程序即可。

SonarQube Java後臺佔用問題處理


漢化包外掛安裝失敗

安裝漢化包,重啟後,一直重啟狀態,或出現其他錯誤提示,可以嘗試在 此處 下載對應SonarQube版本的漢化包,下載完成後,提取jar包,放置到目錄 ..\sonarqube-6.7.5\extensions\plugins 下,重啟服務即可。