SonarQube之采購選型參考


SonarQube是DevOps實踐中主流的一款質量內建工具,過插件機制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。

通過不同的插件對這些結果進行再加工處理,通過量化的方式度量代碼質量的變化,從而可以方便地對不同規模和種類的工程進行代碼質量管理。同時 Sonar 還對大量的持續集成工具提供了接口支持,可以很方便地在持續集成中使用 Sonar。一般情況下,社區版還是可以滿足大部分場景的,即便是C/C++社區也是有其他開源插件的。

工作原理

SonarQube 並不是簡單地將各種質量檢測工具的結果(例如 FindBugs,PMD 等)直接展現給客戶,而是通過不同的插件算法來對這些結果進行再加工,最終以量化的方式來衡量代碼質量,從而方便地對不同規模和種類的工程進行相應的代碼質量管理。 SonarQube 在進行代碼質量管理時,會從圖 1 所示的七個緯度來分析項目的質量。

image.png

SonarQube 可以支持 25+ 種編程語言,針對不同的編程語言其所提供的分析方式也有所不同: 對於所有支持的編程語言,SonarQube 都提供源了代碼的靜態分析功能; 對於某些特定的編程語言,SonarQube 提供了對編譯后代碼的靜態分析功能,比如 java 中的 class file 和 jar 和 C# 中的 dll file 等; 對於某些特定的編程語言,SonarQube 還可以提供對於代碼的動態分析功能,比如 java 和 C# 中的單元測試的執行等。

image.png
遠程客戶機可以通過各種不同的分析機制,從而將被分析的項目代碼上傳到 SonarQube server 並進行代碼質量的管理和分析,SonarQube 還會通過 Web API 將分析的結果以可視化、可度量的方式展示給用戶

軟硬件要求

  1. 硬件上對磁盤讀寫性能要求高,服務涉及elasticsearch索引,IO讀寫和分析的代碼量直接影響sonarqube性能;實際生產環境建議使用專用高速I/O存儲
  2. SonarQube server 不支持32位,但 SonarQube scannner支持32位
  3. SonarQube server 僅支持Java11; SonarQube scanners 同時支持Java8&11
  4. 數據庫支持PostgreSQL, MSSQL Server, Oracle, 不再支持Mysql

版本分類

類型 全稱 說明
CE Community Edition 社區版
DE Developer Edition 開發版(具有CE版所有特性)
EE Enterprise Edition 企業版(具有DE版所有特性)
DCE Data Center Edition 數據中心版(具有EE版所有特性)

image.png

特性費用對比

https://www.sonarsource.com/plans-and-pricing/community/
https://www.sonarsource.com/plans-and-pricing/developer/
https://www.sonarsource.com/plans-and-pricing/enterprise/
https://www.sonarsource.com/plans-and-pricing/data-center/

類型 價格 LOC
CE 免費 -
DE 120歐元-5萬歐元 10萬行代碼-20M行代碼
EE 1.5萬歐元-18萬歐元 1M行代碼-100M行代碼
DCE 10萬歐元-上不封頂 20M代碼-

CE-社區免費版本

image.png

除了支持15種編程語言,CE版還就有如下特性

  • 支持5種IDE
  • 支持60+的插件
  • 支持SonarLint
  • 支持Quality Gate
  • 快速確認近期修改代碼的問題

開源版本不支持一個項目多分支的形式,只能按照特性分支的名稱來生成相對應的掃描項目(會產生很多Sonarqube項目)。

解決方案:假如這個項目有F1,F2等特性分支,在每次對其中特性分支構建掃描時會配置sonar掃描參數(projectName)為 “服務名稱_特性分支名稱”,這樣相當於每個特性分支都對應一個掃描項目。但又間接的帶來了一些問題。

  • 每個特性分支生成一個項目,假如特性分支被刪除呢?或者分支很多呢?
  • 對於SonarQube管理員來說很難管理,增加了任務負擔。

DE-開發者版本

image.png
相較於CE版,增加了C/C++、Objective-C、T-SQL、ABAP、PL/SQL和Swift等,詳細信息如下所示:

image.png
DE版具有CE版所有特性,在此基礎之上,該版本還有如下特性增強:

  • 支持22種編程語言
  • 支持Pull Request的分支代碼分析
  • 安全性的增強:Security Hotspots & Security Vulnerabilities的全面支持
  • 支持SonarLint的智能提示,更好地與IDE進行集成

EE-企業版本

image.png
相較於DE版,增加了Apex、COBOL、PL/1、RPG和VB6等五種,詳細信息如下所示:
image.png

EE版具有DE版所有特性,在此基礎之上,該版本還有如下特性增強:

  • 支持27種編程語言
  • 支持對於Portfolio的管理
  • 提供OWASP / SANS的安全報告
  • 提供可配置的SAST 分析引擎

DCE-數據中心版本

image.png
EE版具有EE版所有特性,此版本主要對於高可用性和橫向擴展性有更好的支持。

如何計算費用?

Sonarqube是按照掃描的行數進行計費的,以年為單位進行訂閱。關於行數如何解讀?假如你買100W行掃描量,那么這個量是被所有項目共享的,但掃描的行數超過100W行,分析服務將會終止。當然如果你刪除項目重置,掃描量就會恢復。

image.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM