SonarQube系列-架構與外部集成
介紹
Sonar是一個代碼質量管理的開源平臺,基于Java開發的,用于管理源代碼的質量,通過插件形式,可以支持包括java、C#、JavaScript等二十余種編程語言的代碼質量管理與檢測。

它具有免費的社區版本和其他付費版本。
利用SonarQube的主要好處是:它集成了數千種自動的靜態代碼分析規則,旨在提高開發人員的代碼質量和安全性,使得開發人員編寫更加干凈,更加安全的代碼。
主要提供了三個比較大的功能:
-
代碼可靠性支持:提前捕獲和提示代碼中的錯誤,從而避免未定義的行為影響到終端用戶。
-
應用安全支持:修復可能危害到應用程序的漏洞,并通過安全熱點學習AppSec(簡單理解就是會學習和識別新的漏洞)。
-
技術債務支持:確保管理的代碼庫干凈并且可維護,以便提高開發人員的開發效率。
這可以幫助你確保代碼在合并之前達到預期的質量!
-
只需一行命令即可輕松集成到CI/CD管道中。
-
也可以集成到Maven和Gradle構建周期中
-
檢查幾乎所有內容,如代碼質量,格式,變量聲明,異常處理等。
實際上,研發團隊可以基于SonarQube做下面的事情:
-
CI/CD流程加入一個SonarQube掃描的環節
-
實施代碼質量閾值,只有通過了這個質量閾值檢測才能進入下一個流程
-
代碼質量低于閾值的項目要及時調整對應的代碼
質量閾值可以進行自定義,SonarQube中針對每個項目會有詳細的面板信息,里面會給出項目當前的健康狀態,不同級別漏洞的分類和明細,漏洞對應提交者等多維度的統計信息,方便進行問題的追蹤和修復。
針對不同的項目,SonarQube可設定了不同等級的閾值,對于老項目,會使用最低等級的閾值:阻斷性的錯誤數量要求為0,對于一些新的項目,則嚴格要求質量如嚴重性的錯誤要求為0等,只要無法通過質量閾值檢查,那么項目是無法上線的。

組成

1、SonarQube服務器
sonarqube是sonar的服務端,相當于一個web服務器,用來發布應用,在線瀏覽、配置分析等。
-
開發人員和管理員操作頻繁,用于瀏覽代碼質量和配置服務器。
-
集成ElasticSearch做搜索服務,用于返回通過UI搜索內容。
-
集成計算引擎處理代碼分析后的報告,并將報告保存到數據庫。

每個文件夾的作用
bin:sonarqube運行命令文件夾
conf:sonarqube配置文件夾
data:嵌入式數據庫的數據(H2數據庫引擎),建議只用于測試和演示
extensions:sonarqube的插件等存放文件夾
lib:sonarqube存放的運行庫文件夾(jar)
logs:sonarqube日志文件夾
temp:sonarqube臨時文件夾
web:sonarqube系統UI界面文件夾
2、SonarQube數據庫
-
存儲代碼分析數據報告。
-
支持oracle、PostgreSQL、MySQL。
3、Sonarqube-Scanner
sonarqube-scanner相當于sonar客戶端, sonarqube-scanner如下圖所示。每個文件夾的作用和sonar類似,具體不在贅述。
-
客戶端工具,用于掃描項目。
-
將掃描結果上傳到服務器。

4、SonarQube Plugins
-
通過插件使平臺功能更加強大,
-
常用的插件分類:SCM、集成、身份驗證、管理維護等插件。
外部集成
下面的模式展示了SonarQube如何與其他ALM工具集成,以及使用SONARQUE的各種組件。
-
開發人員在IDE中編寫代碼,并使用SonarLint來運行本地分析。
-
開發人員將他們的代碼推到他們最喜歡的SCM:Git,Svn,TFVC,…
-
連續集成服務器觸發自動構建,執行SONARQUE掃描器需要運行SONARQUE分析。
-
分析報告被發送到SONARQUE服務器進行處理。
-
SONARQUE服務器在SONARQUE數據庫中處理和存儲分析報告結果,并將結果顯示在UI中。
-
開發人員審查、評論、挑戰他們的問題,通過SONARQUE UI管理和減少他們的技術債務。
-
管理者從分析中得到報告;使用API來自動配置并從SONARQUE中提取數據;使用JMX監控SONARQUBE服務器

SonarLint
SonarLint是一個Sonar IDE插件,可以接收和連接SonrarQube對代碼庫掃描的結果從而通知Developer, SonarLint本身也可以基于一些規則對代碼IDE中的代碼進行即時的檢測。它的目的是在您鍵入代碼時提供即時反饋。


注意:為了獲得最佳性能,Sonar Qube服務器和數據庫應安裝在單獨的主機上,并且服務器主機應為專用主機。服務器和數據庫主機應位于同一網絡上。
所有主機都必須進行時間同步

浙公網安備 33010602011771號