聲明:內(nèi)容轉(zhuǎn)自https://blog.csdn.net/liuhaiguang2012/article/details/79394971
一、SonarQube整體介紹
? SonarQube為靜態(tài)代碼檢查工具,采用B/S架構(gòu),幫助檢查代碼缺陷,改善代碼質(zhì)量,提高開(kāi)發(fā)速度,通過(guò)插件形式,可以支持Java、C、C++、JavaScripe等等二十幾種編程語(yǔ)言的代碼質(zhì)量管理與檢測(cè)。
? 通過(guò)客戶端插件分析源代碼,sonar客戶端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式,并通過(guò)各種不同的分析機(jī)制對(duì)項(xiàng)目源代碼進(jìn)行分析和掃描,并把分析掃描后的結(jié)果上傳到sonar的數(shù)據(jù)庫(kù),通過(guò)sonar web界面對(duì)分析結(jié)果進(jìn)行管理
可以從七個(gè)維度檢測(cè)代碼質(zhì)量:
(1)復(fù)雜度分布(complexity):代碼復(fù)雜度過(guò)高將難以理解
(2) 重復(fù)代碼(duplications):程序中包含大量復(fù)制、粘貼的代碼而導(dǎo)致代碼臃腫,sonar可以展示源碼中重復(fù)嚴(yán)重的地方
(3) 單元測(cè)試統(tǒng)計(jì)(unit tests):統(tǒng)計(jì)并展示單元測(cè)試覆蓋率,開(kāi)發(fā)或測(cè)試可以清楚測(cè)試代碼的覆蓋情況
(4) 代碼規(guī)則檢查(coding rules):通過(guò)Findbugs,PMD,CheckStyle等檢查代碼是否符合規(guī)范
(5) 注釋率(comments):若代碼注釋過(guò)少,特別是人員變動(dòng)后,其他人接手比較難接手;若過(guò)多,又不利于閱讀
(6) 潛在的Bug(potential bugs):通過(guò)Findbugs,PMD,CheckStyle等檢測(cè)潛在的bug
(7) 結(jié)構(gòu)與設(shè)計(jì)(architecture & design):找出循環(huán),展示包與包、類(lèi)與類(lèi)之間的依賴(lài)、檢查程序之間耦合度
二、SonarQube平臺(tái)由四部分組成:
1、 SonarQubeServer
1) Web Server, 瀏覽質(zhì)量的快照和配置sonarqube實(shí)例
2)SearchServer based on Elasticsearch, 執(zhí)行來(lái)自頁(yè)面的查詢(xún)請(qǐng)求
3)Compute EngineServer ,處理代碼分析報(bào)告并保存在sonarqube數(shù)據(jù)庫(kù)
2、SonarQube Database :
1) sonarqube實(shí)例的配置(安全、插件設(shè)置等)
2) 項(xiàng)目、視圖等的質(zhì)量快照。
3、SonarQube Plugins
語(yǔ)言、SCM、集成、身份驗(yàn)證和治理插件
一個(gè)或多個(gè)sonarqube Scanners運(yùn)行分析項(xiàng)目