【代碼審計】SonarQube配置外部數據存儲和基本使用

        在上篇文章《【代碼審計】使用SonarQube進行代碼質量分析管理 》中,咱們說明了項目代碼質量的重要性,以及當前代碼質量分析管理的一些工具,而後詳細說明了SonarQube質量分析管理工具的安裝部署和代碼掃描分析的過程。上文咱們說到SonarQube是使用本身默認的內置的數據庫,在一些功能上會受到限制,本文咱們將內置存儲改成外置mysql存儲,而後在分析項目代碼,對項目代碼嚴重性地方進行修復工做,而後介紹SonarQube其餘的一些基本的使用(設置、插件安裝等)java

1、準備工做

1.代碼分析管理平臺SonarQube(已部署)mysql

2.mysql數據庫服務5.6-5.7git

2、配置外部數據存儲

1.配置SonarQube數據服務github

打開咱們上文安裝的SonarQube的根目錄,而後進入conf目錄,修改sonar.properties文件web

sonar.jdbc.url=jdbc:mysql://maxbill:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=sonar
sonar.jdbc.password=sonarsql

參數說明:數據庫

sonar.jdbc.url  數據庫鏈接地址工具

sonar.jdbc.username  數據庫用戶名url

sonar.jdbc.password  數據庫密碼spa

咱們在數據庫中建立sonar數據庫,並設置受權

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;

2.驗證配置

啓動sonarqube服務,初始化數據庫信息(使用上文咱們編寫的啓動腳本)

此刻,SonarQube已經啓動成功,咱們訪問http://127.0.0.1:9000,發現訪問不到頁面

此時咱們只能去看sonar的日誌,定位到sonar的log目錄下,找到web.log文件

從日誌中咱們明顯的看到如下錯誤,該版本的必須使用mysql5.6及以上版本:

2018.05.23 11:10:49 ERROR web[][o.s.s.p.Platform] Web server startup failed: Unsupported

mysql version: 5.5. Minimal supported version is 5.6.

3.解決mysql版本低的問題

通過查詢sonar的日誌,咱們知道使咱們的mysql版本低致使的運行初始化異常,咱們升級mysql到6.0(備註:我主機上恰好有6.0的包,只要升級到6.0及以上就行),升級過程忽略,你們可自行百度,或者 從新卸載安裝也是能夠的

此時咱們重啓sonarqube,訪問http://127.0.0.1:9000

結果仍是報錯:

報Unknown character set: 'utf8mb4'異常,查找了許多資料,覺得mysql6.0版本不支持,最後發現不是mysql的問題,而是mysql驅動引發的問題。將mysql驅動改爲 mysql-connector-java-5.1.6-bin.jar

本覺得就完美解決了,天公不做美,又有新問題了,啓動訪問不到,繼續看日誌

查了N多的資料,沒找到解決辦法,看日誌應該是7.1版本的BUG(最新的版本),因而下載6.7.3版本部署後,重複上面的配置步驟,啓動訪問http://127.0.0.1:9000 仍是訪問不到,看日誌如上的異常信息,因而排除sonarqube版本問題,懷疑是mysql版本致使,果斷卸載mysql6.0從新安裝mysql5.6版本,而後從新啓動程序,訪問http://127.0.0.1:9000 ,咱們看到程序在進行數據初始化,以下:

咱們使用客戶端鏈接mysql數據庫看看錶中數據:

注意:後面又切回SonarQube7.1也是正常的,因此你們注意下最好使用mysql5.6-5.7版本

此時咱們能夠看到使用了外置的mysql數據庫後,這裏的警告提示消失了

4.配置Scanner掃描工具

打開咱們上文安裝的Scanner的根目錄,而後進入conf目錄,修改sonar-scanner.properties文件

sonar.jdbc.url=jdbc:mysql://maxbill:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

3、使用SonarScanner掃描分析項目代碼

因爲咱們使用了外置的數據庫以前掃描分析的信息就丟失了,咱們使用scanner從新掃描分析項目代碼進入咱們要掃描的項目的更目錄下面,運行終端執行sonar-scanner

等待項目被掃描分析完成

掃描分析完成咱們登錄SonarQube代碼分析管理平臺等待分析結果    

稍等一會就分析完成了,咱們能夠看待項目分析的詳情:

4、在SonarQube代碼分析管理平臺解決代碼問題

咱們在項目代碼分析詳情中點擊問題標籤,能夠看到項目列出來的不一樣級別的問題列表

咱們點擊右側阻斷性的問題(最嚴重,必需要改的)

咱們點擊一個進入,能夠看到錯誤的代碼塊位置,以及系統的改錯提示

在這裏能夠去修復這個問題,也能夠去修改這個問題的級別,能夠評論,能夠給該問題打上標籤,能夠將該問題分配給該項目其餘成員

5、其餘功能介紹

1.插件安裝

系統默認是英文,能夠安裝中文插件(本文已安裝)

插件市場中咱們能夠安裝、卸載、更新插件,固然也能夠去github下載第三方開發的插件安裝

2.系統日誌

在這裏咱們能夠查看系統、web、引擎的基本信息、改動日誌級別、下載系統信息、下載日誌信息、在線重啓SonarQube數據管理系統

3.權限控制

在權限控制中,能夠管理系統的用戶(新增、刪除、禁用、修改密碼、分配組、查看詳情)、管理系統羣組(建立、刪除、更新、管理羣組中人員)、給用戶或者羣組分配系統功能操做權限、配置權限模板等

4.代碼規則

在這裏能夠配置各類語言的代碼分析規則(能夠配置自定義的規則)

5.質量配置

在質量配置中能夠自定義不一樣語言系統分析代碼質量使用的質量閥值(影響代碼分析結果)

6、總結

         本文中踩了很多的坑,主要仍是sonar和mysql的版本兼容性問題,這裏也再次提醒你們(按照sonar的配置文件提示使用mysql版本,sonar7.1使用mysql5.6-5.7),其餘就是簡單的使用的配置了。

相關文章
相關標籤/搜索