Skip to content

1. SonarQube 是什么?

SonarQube®是一种自动代码审查工具,可检测代码中的错误,漏洞和代码味道。

它可以与您现有的工作流程集成,以实现跨项目分支和拉取请求的连续代码检查。

2. 为什么使用 SonarQube (作用)?

  • 帮助您编写更干净。

  • 使你的代码安全性更高。

  • 帮助你分析代码的利弊性,提高你写代码的规范。

3. SonarQube 架构与整合

3.1 架构

  • SonarQube平台由4个组件组成:
  1. 一台SonarQube Server启动3个主要过程:
    • Web服务器,供开发人员,管理人员浏览高质量的快照并配置SonarQube实例
    • 基于Elasticsearch的Search Server从UI进行后退搜索
    • Compute Engine服务器,负责处理代码分析报告并将其保存在SonarQube数据库中
  2. 一个SonarQube数据库要存储:
    • SonarQube实例的配置(安全性,插件设置等)
    • 项目,视图等的质量快照。
  3. 服务器上安装了多个SonarQube插件,可能包括语言,SCM,集成,身份验证和管理插件
  4. 在构建/持续集成服务器上运行一个或多个SonarScanner,以分析项目

3.2 整合

  • 以下架构显示了SonarQube如何与其他ALM工具集成以及使用SonarQube的各种组件的位置。
  1. 开发人员在其IDE中进行编码,并使用SonarLint运行本地分析。
  2. 开发人员将其代码推送到他们最喜欢的SCM中:git,SVN,TFVC等。
  3. Continuous Integration Server会触发自动构建,并执行运行SonarQube分析所需的SonarScanner
  4. 分析报告将发送到SonarQube服务器进行处理。
  5. SonarQube Server处理分析报告结果并将其存储在SonarQube数据库中,并在UI中显示结果。
  6. 开发人员通过SonarQube UI审查,评论,挑战他们的问题,以管理和减少技术债务。
  7. 经理从分析中接收报告。Ops使用API自动执行配置并从SonarQube提取数据。运维人员使用JMX监视SonarQube Server

4. SonarQube 注意事项

  • SonarQube平台不能具有多个SonarQube服务器(尽管该服务器可以作为群集安装)和一个SonarQube数据库。
  • 为了获得最佳性能,应将每个组件(服务器,数据库,扫描仪)安装在单独的计算机上,并且服务器计算机应专用。
  • SonarScanners通过添加机器进行扩展。
  • 所有机器必须时间同步。
  • SonarQube服务器SonarQube数据库必须位于同一网络中
  • SonarScanners不必与SonarQube Server位于同一网络上。
  • SonarScannersSonarQube数据库之间没有通信。