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 下,重啓服務即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章