SonarQube架構及使用介紹

SonarQube構架

SonarQube框架包含以下四個部分:

  • Project
  • SonarQube Scanner
  • SonarQube Server
  • SonarQube Database

SonarQube架構

Project

是需要被分析的源碼,如我們的app工程源碼,SonarQube支持多種語言和多種工程結構,Andriod是屬於一種多模塊的java工程。

SonarQube Scanner

是用於執行代碼分析的工具,在Project的根目錄下執行,我們還需要在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能構解析的數據格式上報給Server。

SonarQube Server

顯示分析結果的Web Server,在SonarQube Scanner第一次將一個工程的分析結果上報給SonarQube Server後,Server上會自動創建一個工程顯示分析的結果,可以在Server上設置代碼質量管理相關的各種配置,如設置代碼檢查規則(Rule)和質量門限(Quality Gate)等。

SonarQube配置

SonarQube支持多種工程構建方式的配置,也對應需要用不同的Scanner來執行分析過程:

  • 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會繼承該路徑,也可以重載掉該值
    }
}

更多屬性詳見
http://docs.sonarqube.org/display/SONAR/Analysis+Parameters

注:如果我們每次分析代碼裏,都在工程裏手動執行,那麼用gradle方式就可以了,但是如果要與jenkins集成,則需要用到Sonar Runner方式。

Sonar Runner

  • scanner:sonar-runner
  • config方式:sonar-project.properties (.properties文件是java工程的一種配置文件,格式爲”key=value”)
  • 運行方式:在工程根目錄下執行sonar-runner

sonar-project.properties範例

sonar.host.url=http://sonarqube.example.com
sonar.projectKey=AndroidDemo
sonar.projectName=AndroidDemo
sonar.projectVersion=2.3.2
sonar.sources=src/main/java

sonar.sourceEncoding=UTF-8
sonar.language=java

sonar.modules=app
presentation.sonar.projectBaseDir=app

Jenkins集成

獲取SonarQube結果

api/resource/index?resource={id or key of the resource}&metric=quality_gate_details&format=json

未完待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章