一、sonar簡介
sonar是一款靜態代碼質量分析工具,支持Java、Python、PHP、JavaScript、CSS等25種以上的語言,而且能夠集成在IDE、Jenkins、Git等服務中,方便隨時查看代碼質量分析報告;
sonar通過配置的代碼分析規則,從可靠性、安全性、可維護性、覆蓋率、重復率等方面分析項目,風險等級從A~E划分為5個等級;
同時,sonar可以集成pmd、findbugs、checkstyle等插件來擴展使用其他規則來檢驗代碼質量;
sonar設置了質量門,通過設置的質量門評定此次提交分析的項目代碼是否達到了規定的要求;
二、sonar的組成
一個sonar項目主要有以下四個組件構成:
-
一台SonarQube Server啟動3個主要過程:
- Web服務器,供開發人員,管理人員瀏覽高質量的快照並配置SonarQube實例
- 基於Elasticsearch的Search Server從UI進行后退搜索
- Compute Engine服務器,負責處理代碼分析報告並將其保存在SonarQube數據庫中
-
一個SonarQube數據庫要存儲:
- SonarQube實例的配置(安全性,插件設置等)
- 項目,視圖等的質量快照。
- 服務器上安裝了多個SonarQube插件,可能包括語言,SCM,集成,身份驗證和管理插件
- 在構建/持續集成服務器上運行一個或多個SonarScanner,以分析項目;
三、工作流轉
以下架構圖為sonar項目的工作流轉圖
- 開發人員在其IDE中進行編碼,並使用SonarLint運行本地分析。
- 開發人員將其代碼推送到他們最喜歡的SCM中:git,SVN,TFVC等。
- Continuous Integration Server會觸發自動構建,並執行運行SonarQube分析所需的SonarScanner。
- 分析報告將發送到SonarQube服務器進行處理。
- SonarQube Server處理分析報告結果並將其存儲在SonarQube數據庫中,並在UI中顯示結果。
- 開發人員通過SonarQube UI審查,評論,挑戰他們的問題,以管理和減少技術債務。
- 經理從分析中接收報告。Ops使用API自動執行配置並從SonarQube提取數據。運維人員使用JMX監視SonarQube Server。