SonarQube系列-架構與外部集成

介紹

Sonar是一個代碼質量管理的開源平臺,基於Java開發的,用於管理源代碼的質量,通過插件形式,可以支持包括java、C#、JavaScript等二十餘種編程語言的代碼質量管理與檢測。

它具有免費的社區版本和其他付費版本。

SonarQube之採購選型參考

利用SonarQube的主要好處是:它集成了數千種自動的靜態代碼分析規則,旨在提高開發人員的代碼質量和安全性,使得開發人員編寫更加乾淨,更加安全的代碼。

主要提供了三個比較大的功能:

  • 代碼可靠性支持:提前捕獲和提示代碼中的錯誤,從而避免未定義的行爲影響到終端用戶。

  • 應用安全支持:修復可能危害到應用程序的漏洞,並通過安全熱點學習AppSec(簡單理解就是會學習和識別新的漏洞)。

  • 技術債務支持:確保管理的代碼庫乾淨並且可維護,以便提高開發人員的開發效率。

這可以幫助你確保代碼在合併之前達到預期的質量!

  • 只需一行命令即可輕鬆集成到CI/CD管道中。

  • 也可以集成到Maven和Gradle構建週期中

  • 檢查幾乎所有內容,如代碼質量,格式,變量聲明,異常處理等。

實際上,研發團隊可以基於SonarQube做下面的事情:

  • CI/CD流程加入一個SonarQube掃描的環節

  • 實施代碼質量閾值,只有通過了這個質量閾值檢測才能進入下一個流程

  • 代碼質量低於閾值的項目要及時調整對應的代碼

質量閾值可以進行自定義,SonarQube中針對每個項目會有詳細的面板信息,裏面會給出項目當前的健康狀態,不同級別漏洞的分類和明細,漏洞對應提交者等多維度的統計信息,方便進行問題的追蹤和修復。

針對不同的項目,SonarQube可設定了不同等級的閾值,對於老項目,會使用最低等級的閾值:阻斷性的錯誤數量要求爲0,對於一些新的項目,則嚴格要求質量如嚴重性的錯誤要求爲0等,只要無法通過質量閾值檢查,那麼項目是無法上線的。

組成

1、SonarQube服務器

sonarqube是sonar的服務端,相當於一個web服務器,用來發布應用,在線瀏覽、配置分析等。

  • 開發人員和管理員操作頻繁,用於瀏覽代碼質量和配置服務器。

  • 集成ElasticSearch做搜索服務,用於返回通過UI搜索內容。

  • 集成計算引擎處理代碼分析後的報告,並將報告保存到數據庫。

image.png

每個文件夾的作用

 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類似,具體不在贅述。


*   客戶端工具,用於掃描項目。
    
*   將掃描結果上傳到服務器。
    

![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936421-622703806.png)

### 4、SonarQube Plugins

*   通過插件使平臺功能更加強大,
    
*   常用的插件分類:SCM、集成、身份驗證、管理維護等插件。
    

外部集成
----

下面的模式展示了SonarQube如何與其他ALM工具集成,以及使用SONARQUE的各種組件。

1.  開發人員在IDE中編寫代碼,並使用SonarLint來運行本地分析。
    
2.  開發人員將他們的代碼推到他們最喜歡的SCM:Git,Svn,TFVC,…
    
3.  連續集成服務器觸發自動構建,執行SONARQUE掃描器需要運行SONARQUE分析。
    
4.  分析報告被髮送到SONARQUE服務器進行處理。
    
5.  SONARQUE服務器在SONARQUE數據庫中處理和存儲分析報告結果,並將結果顯示在UI中。
    
6.  開發人員審查、評論、挑戰他們的問題,通過SONARQUE UI管理和減少他們的技術債務。
    
7.  管理者從分析中得到報告;使用API來自動配置並從SONARQUE中提取數據;使用JMX監控SONARQUBE服務器
    

![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936717-211760692.png)

SonarLint
---------

SonarLint是一個Sonar IDE插件,可以接收和連接SonrarQube對代碼庫掃描的結果從而通知Developer, SonarLint本身也可以基於一些規則對代碼IDE中的代碼進行即時的檢測。它的目的是在您鍵入代碼時提供即時反饋。  
![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936817-1917286195.png)![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936719-717063249.png)  
**注意:**爲了獲得最佳性能,Sonar Qube服務器和數據庫應安裝在單獨的主機上,並且服務器主機應爲專用主機。服務器和數據庫主機應位於同一網絡上。

所有主機都必須進行時間同步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章