SonarQube架构及使用介绍

SonarQube架构包括Project、Scanner、Server和Database四部分,用于代码分析和质量管理。Project是分析的源码,Scanner执行分析并将结果上传至Server。Server作为Web展示分析结果,支持Gradle、Maven等构建工具的配置。SonarQube的Gradle插件通过gradle sonarqube任务执行分析,而Sonar Runner则通过sonar-project.properties文件配置。Jenkins集成中,可以通过API获取SonarQube的质量门限详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值