

西安青穗信息技術有限責任公司
主營產(chǎn)品: 安全軟件
SonarQube價格-軟件授權-正版購買-技術支持-中國代理商
價格
訂貨量(套)
面議
≥1
店鋪主推品 熱銷潛力款
쑥쑠쑝쑝쑞쑡쑞쑝쑡쑢쑠
在線客服
SonarQube的介紹
1.SonarQube簡介
SonarQube是一個用于代碼質量管理的開源平臺,用于管理源代碼的質量。同時 SonarQube 還對大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 SonarQube。此外, SonarQube 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報告文檔化也有良好的支持。
2.SonarQube的使用范圍
通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語言的代碼質量管理與檢測,針對不同的編程語言其所提供的分析方式也有所不同: 對于所有支持的編程語言,SonarQube 都提供源了代碼的靜態(tài)分析功能; 對于某些特定的編程語言,SonarQube 提供了對編譯后代碼的靜態(tài)分析功能。
3.SonarQube工作原理
SonarQube 并不是簡單地將各種質量檢測工具的結果(例如 FindBugs,PMD 等)直接展現(xiàn)給客戶,而是通過不同的插件算法來對這些結果進行再加工,最終以量化的方式來衡量代碼質量,從而方便地對不同規(guī)模和種類的工程進行相應的代碼質量管理。 SonarQube 在進行代碼質量管理時,會從圖 1 所示的七個緯度來分析項目的質量。
4.需要注意的代碼質量問題
1)不遵循代碼標準--SonarQube 可以通過PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測工具規(guī) 范代碼編寫。
2)潛在的缺陷--SonarQube 可以通過PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測工具檢 測出潛在的缺陷。
3)糟糕的復雜度分布-->文件、類、方法等,如果復雜度過高將難以改變,這會使得開發(fā)人員難以理解它們且如果沒有自動化的單元測試,對于程序中的任何組件的改變都將可能導致需要全面的回歸測試。
4)重復-->顯然程序中包含大量復制粘貼的代碼是質量低下的,SonarQube 源碼中重復嚴重的地方。
5)注釋不足或者過多-->沒有注釋將使代碼可讀性變差,特別是當不可避免地出現(xiàn)人員變動 時,程序的可讀性將大幅下降而過多的注釋又會使得開發(fā)人員將精力過多地花費在閱讀注釋上,亦違背初衷。
6)缺乏單元測試 -->SonarQube 可以很方便地統(tǒng)計并展示單元測試覆蓋率。
是需要被分析的源碼,如我們的app工程源碼,SonarQube支持多種語言和多種工程結構,Andriod是屬于一種多模塊的java工程。
SonarQube Scanner
是用于執(zhí)行代碼分析的工具,在Project的根目錄下執(zhí)行,我們還需要在Project下進行SonarQube配置,其中指定了工程的相關信息,還指定了SonarQube Server的地址,SonarQube Scanner分析完畢之后,會將結果上報到該Server。
注:官方對Scanner的描述是“The SonarQube Scanner is recommended as the default launcher to analyze a project with SonarQube”,個人理解是可以用任何其它的工具替代,只要能對Source進行分析,并生成Server能構解析的數(shù)據(jù)格式上報給Server。
SonarQube Server
顯示分析結果的Web Server,在SonarQube Scanner第一次將一個工程的分析結果上報給SonarQube Server后,Server上會自動創(chuàng)建一個工程顯示分析的結果,可以在Server上設置代碼質量管理相關的各種配置,如設置代碼檢查規(guī)則(Rule)和質量門限(Quality Gate)等。
SonarQube配置
SonarQube支持多種工程構建方式的配置,也對應需要用不同的Scanner來執(zhí)行分析過程:
Ant
Maven
MSBuild(Microsoft Build Engine)
Gradle
Sonar Runner
下面只講一下我們目前用得到的兩種,即Gradle和Sonar Runner
Gradle
scanner:采用gradle plugin,gradle自帶了sonarqube的plugin
config方式:gradle task
運行方式:gradle sonarqube
apply plugin: "org.sonarqube"
sonarqube {
sonarProperties {
property "sonar.host.url", "http://sonarqube.example.com"
property "sonar.projectName", "AndroidDemo"
property "sonar.projectKey", "AndroidDemo"
property "sonar.version", "2.3.2"
property "sonar.sources", "src/main/java" // module會繼承該路徑,也可以重載掉該值
}
}
SonarSource為代碼質量提供了世界一流的解決方案。其開源和商業(yè)版本可幫助各種規(guī)模的客戶管理其應用程序的代碼質量,降低風險并最終交付更可靠的軟件。
SonarSource提供SonarQube代碼管理平臺和SonarLint IDE開發(fā)插件。SonarQube在持續(xù)集成項目中,可以通過jenkins插件在項目中快速實現(xiàn)代碼掃描,并且提供了詳細的問題分析和bugs修改意見。
全球超過1000多家客戶,包括三星、騰訊、招商銀行等,并被超過85,000家組織使用。
SonarSource解決方案通過插件形式支持20多種編程語言(如Java,C#,JavaScript,C/C++,TypeScript,COBOL等)開發(fā)的代碼。
以SonarJava插件為例SonarSource支持498種規(guī)則,bugs、vulnerablility、code smell三大類問題,包括Android、api-design、bad-practive等代碼質量問題;兼容Cert、CWE和OWASP等安全性代碼規(guī)約;及代碼編寫規(guī)約。