SonarQube 简介

SonarQube(Sonar) 是一个开源平台,用于管理源代码的质量。SonarQube 不只是一个质量数据报告工具,更是代码质量管理平台。

架构与集成

架构

SonarQube 平台主要由四个组件组成:

sonarqube architecture
  1. SonarQube Server 由三部分组成:

    1. Web Server 开发者、管理员可通过该服务浏览质量快照以及配置 SonarQube 实例。

    2. Search Server 基于 Elasticsearch 的搜索服务。

    3. Compute Engine Server 负责处理代码分析报告,并将这些报告保存到数据库。

  2. SonarQube Database

    1. 保存 SonarQube 配置实例,如:安全、插件相关配置等。

    2. 项目质量快照、视图等。

  3. SonarQube Plugins 服务器可安装大量插件,包括语言、软件配置管理(SCM)、集成、认证、治理等插件。

  4. SonarQube Scanners 运行在构建、持续集成服务器上,用来对对项目进行质量分析。

主要工作过程

  1. SonarQube Scanners 对项目进行分析,生成报告发送给 SonarQube Server

  2. Compute Engine Server 处理分析报告,将报告保存到数据库。

  3. Web Server 从数据库中读取分析快照,向开发者或管理员展示。

  4. Search Server 可进行搜索。

集成

以下的模式展示了 SonarQube 如何与其他应用生命周期管理(ALM)工具集成以及 SonarQube 各种组件使用场景:

sonarqube integration
  1. 开发者通过的 IDE 工具编写代码并使用 SonarLint 来执行本地分析。

  2. 开发者将代码推送到他们最喜欢的 SCM 中:git,SVN,TFVC …​…​。

  3. 持续集成服务器会触发自动构建,并执行 SonarQube Scanner 来对项目进行质量分析。

  4. 分析报告会被发送到 SonarQube Server,该服务会对报告进行处理。

  5. SonarQube Server 对分析报告进行处理,将处理结果存储在 SonarQube Database 中,该结果可在 UI 中展示。

  6. 开发者通过 SonarQube UI 对代码进行审查、评论、解决 issue(challenge their Issues) 以管理和减少技术债务。

  7. 管理者可从从分析结果中导出报告:

    • 使用 API ​​来自动配置并从 SonarQube 中提取数据。

    • 使用JMX来监控 SonarQube 服务。