一、Sonar 系列之 SonarQube 简介
一、sonar 简介
sonar 是一款静态代码质量分析工具,支持 Java、Python、PHP、JavaScript、CSS 等 25 种以上的语言,而且能够集成在 IDE、Jenkins、Git 等服务中,方便随时查看代码质量分析报告;
sonar 通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从 A~E 划分为 5 个等级;
同时,sonar 可以集成 pmd、findbugs、checkstyle 等插件来扩展使用其他规则来检验代码质量;
sonar 设置了质量门,通过设置的质量门评定此次提交分析的项目代码是否达到了规定的要求;
二、sonar 的组成
一个 sonar 项目主要有以下四个组件构成:
一台 SonarQube Server 启动 3 个主要过程:
- Web 服务器,供开发人员,管理人员浏览高质量的快照并配置 SonarQube 实例
- 基于 Elasticsearch 的 Search Server 从 UI 进行后退搜索
- Compute Engine 服务器,负责处理代码分析报告并将其保存在 SonarQube 数据库中
一个 SonarQube 数据库要存储:
- SonarQube 实例的配置(安全性,插件设置等)
- 项目,视图等的质量快照。
服务器上安装了多个 SonarQube 插件,可能包括语言,SCM,集成,身份验证和管理插件
在构建/持续集成服务器上运行一个或多个 SonarScanner,以分析项目;
三、工作流转
以下架构图为 sonar 项目的工作流转图
- 开发人员在其 IDE 中进行编码,并使用 SonarLint 运行本地分析。
- 开发人员将其代码推送到他们最喜欢的 SCM 中:git,SVN,TFVC 等。
- Continuous Integration Server 会触发自动构建,并执行运行 SonarQube 分析所需的 SonarScanner。
- 分析报告将发送到 SonarQube 服务器进行处理。
- SonarQube Server 处理分析报告结果并将其存储在 SonarQube 数据库中,并在 UI 中显示结果。
- 开发人员通过 SonarQube UI 审查,评论,挑战他们的问题,以管理和减少技术债务。
- 经理从分析中接收报告。Ops 使用 API自动执行配置并从 SonarQube 提取数据。运维人员使用 JMX 监视 SonarQube Server。