前言
作為一名碼農,曾幾何時,無數次挑燈夜戰,只為第二天為客戶穩定演示系統,奈何到關鍵時候,會發現代碼中會有很多坑,這個時候,往往是最令人崩潰的。如何能做到提前發現程序潛在的問題,找到隱藏的八阿哥,保證系統的穩定,一直是困擾着我們的問題。記得以前為了解決這個問題,部門專門組織每周一次代碼走查,雖然最后情況有所改善,但費事費力,並未得到根本上的解決。
所幸的是,有些大牛開發出了一系列代碼質量檢測工具,給我們這些碼農帶來了福音。下面就來介紹一款開源的代碼質量管理系統——SonarQube。相信通過下面簡單的介紹,你會跟我一樣有種相見恨晚的感覺。
Sonar Qube簡介
SonarQube(曾用名Sonar(聲納))是一個開源的代碼質量管理系統。它支持C/C++、JavaScript、C#、Java、COBOL、TypeScript、PL/SQL、PL/I、PHP、FLEX、Python、Swift、XML等超過20種編程語言的檢測。Sonar可以通過插件Findbugs、Checkstyle等工具持續對代碼進行檢測,可以使我們盡早發現項目中的Bugs,漏洞及壞味道,從而保證軟件產品質量。
環境准備
-
操作系統:Windows10
-
Java環境:下載 jdk-1.8.0-131-X64.zip,配置Java環境變量(參考:http://jingyan.baidu.com/article/02027811629b941bcc9ce521.html)
Maven環境:下載apache-maven-3.5.2-bin.zip,配置Maven環境變量(參考:http://wiki.jikexueyuan.com/project/maven/environment-setup.html)
-
Jenkins安裝及配置,請參考上一篇文章,鏈接:https://my.oschina.net/lsjcoder/blog/1573648。
-
數據庫:mysql-5.6.23-winx64
Sonar 安裝
-
SonarQube下載。首先,到Sonar官網
https://www.sonarqube.org/downloads/)
下載安裝包,目前最新版本為SonarQube 6.7 (LTS *)。將SonarQube解壓到本地任意目錄。 -
配置Sonar數據庫。Sonar默認使用的是H2的內嵌數據庫,內嵌數據庫只能用戶測試場景,本例中使用mysql數據庫,具體配置方法如下:
在mysql中創建sonar數據庫,以用戶名root,密碼admin為例。打開...\sonarqube-6.6\conf文件夾,找到sonar.properties文件,修改以下幾個地方:
配置數據庫用戶名及密碼:
#sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=admin
設置數據庫庫連接:
#sonar.properties
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.driverClassName:com.mysql.jdbc.Driver
sonar.jdbc.validationQuery:select 1
設置連接池:
#sonar.properties
sonar.jdbc.maxActive: 20
sonar.jdbc.maxIdle: 5
sonar.jdbc.minIdle: 2
sonar.jdbc.maxWait: 5000
sonar.jdbc.minEvictableIdleTimeMillis: 600000
sonar.jdbc.timeBetweenEvictionRunsMillis: 30000
- 啟動Sonar。
啟動Sonar有兩種方式:一種,直接執行...\sonarqube-6.6\bin\windows-x86-64\StartSonar.bat;另一種,將Sonar安裝為Windows服務,注意一定要以管理員身份運行...\sonarqube-6.6\bin\windows-x86-64\InstallNTService.bat,安裝成功以后,運行...\sonarqube-6.6\bin\windows-x86-64\StartNTService.bat啟動Sonar。Sonar啟動以后,在瀏覽器中輸入地址http://localhost:9000
訪問Sonar主頁。
- Sonar漢化。
下載Sonar漢化插件,鏈接:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.18
,將漢化插件拷貝到...\sonarqube-6.6\extensions\plugins文件夾,重啟Sonar。Sonar重啟以后,在瀏覽器中輸入地址http://localhost:9000
訪問Sonar主頁。
- Sonar插件安裝。
-
安裝 SonarJava 插件Java代碼分析器;
-
安裝SonarJS插件,JavaScript代碼分析器;
-
安裝SonarXML插件,XML分析器;
-
安裝Web插件,HTML, JSP, JSF, ..代碼分析器;
-
安裝CSS / SCSS / Less插件,CSS、Less代碼分析器;
-
安裝SonarC# 插件,C#代碼分析器;
-
安裝SonarQube :: Plugins :: SCM :: SVN插件;
-
安裝Checkstyle插件,Provide Checkstyle rules for Java projects;
-
安裝Findugs 插件,Provide Findbugs rules for analysis of Java projects。
-
配置SCM權限。
Scanner安裝
-
下載SonarQube Scanner 3.0.3安裝包(鏈接:
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
)。將SonarQube Scanner 3.0.3安裝包解壓到任意目錄。 -
配置SonarQube Scanner。打開...\sonar-scanner-3.0.3.778-windows\conf文件夾,找到sonar-scanner.properties並以文本編輯器打開,配置如下:
# ----- Default SonarQube server sonar.host.url=http://localhost:9000 # ----- Default source code encoding sonar.sourceEncoding=UTF-8
Jenkins集成
-
Jenkins安裝。請參照上一篇文章,鏈接:
https://my.oschina.net/lsjcoder/blog/1573648
。 -
安裝SonarQube Scanner for Jenkins插件安裝。系統管理->管理插件,找到SonarQube Scanner for Jenkins插件,安裝完成后重啟Jenkins。
-
配置SonarQube Server。
-
配置SonarQube Scanner。
-
項目中增加SonarQube Scanner掃描配置。
-
立即構建,查看控制台日志輸出。
分析結果
點擊上面的鏈接,即可打開SonarQube,查看項目分析結果。
總結
在整合流程中,需要注意一下幾點:
- mysql版本必須要安裝5.6及以上版本,否則會導致Sonar因不兼容而無法正常運行;
- SonarQube未配置SCM權限,會導致報”SVNAuthenticationException“的錯誤;
- 注意一定要安裝各種語言分析插件,否則會報”No quality profiles have been found, you probably don't have any language plugin installed“的錯誤;
至此,Jenkins與Sonar Qube的初步集成工作已初步完成,下面就會針對自動檢測出來的Bugs、漏洞及壞味道,進行逐一修復,還掉以前欠下來的技術債務。
歡迎關注我的微信公眾號: