7

我有一个简单的问题,可能有一个简单的答案,但我找不到它是什么。我们想将 SonarQube 与 Checkstyle 和其他一些工具一起部署,但我们无法确定它是用于集中式服务器部署,还是在每个开发人员机器上?所有教程都展示了在不同机器上的安装并在 localhost 中使用,同时还有一个公共实例示例,并且要求和规范看起来确实类似于服务。

另一方面,我不知道开发人员如何提交他们的代码以检查它是否在服务器上。

那么,简而言之,它是如何部署的?任何清单或类似的东西都会有很大帮助。

4

2 回答 2

16

SonarQube“运行时”架构有几个元素:

  1. SonarQube 服务器。它包含一个数据库(例如,MySql)和一个嵌入式网络服务器(Tomcat)。SonarQube 服务器存储分析结果(指标),但不执行代码分析。该服务器提供了一个 Web UI,显示了项目的仪表板、各种指标并深入了解代码、管理选项。它使用可插拔架构——您可以通过插件添加/删除功能。
  2. 在开发者机器上运行代码分析的程序。有以下选择:(a)如果他们使用 Eclipse 或 IntelliJ,他们可以使用各自的 SonarLint 插件,该插件提供配置属性、运行分析的菜单选项、显示违规的视图等;(b)开发者也可以通过 maven( mvn sonar:sonar) 或 gradle( gradlew sonarqube) 运行代码分析;(C)开发人员可以通过名为 SonarQube Runner 的程序执行各种代码分析。在开发人员机器上运行分析的所有这些程序选项都需要配置为与 SonarQube 服务器通信。例如,当您使用 SonarLint 在 IntelliJ 中运行代码分析时,指标将上传到服务器。此服务器通常由所有开发人员共享,但也可以是 localhost。
  3. 在 CI/CD 服务器上运行代码分析的程序。构建软件项目的作业/管道可以配置为运行 SonarQube 代码分析。它可以像在开发人员的机器上一样通过 maven 或 gradle 来完成,也可以通过插件来完成。有适用于 Jenkins、Hudson、Bamboo 等的SonarQube CI 插件。根据项目的大小,您可能希望将代码分析配置为仅每天运行一次,而不是在每次代码提交或更改依赖项时运行。在 CI 服务器上执行的 SonarQube 代码分析同样会将生成的指标发送到 SonarQube 服务器。

SonarQube 架构文档非常差(不是说缺席),因此很难了解全局。我希望这有帮助。

于 2014-02-12T12:40:03.967 回答
10

SonarQube(以前简称为“Sonar”)是一个基于服务器的系统。当然,您可以将它安装在本地机器上(硬件要求最低)。但它是一个带有数据库的中央服务器。

分析由一些 Sonar“客户端”软件执行,可以是 sonar runner、sonar ant task、sonar Eclipse 插件等。分析结果可以自动上传到服务器,通过 sonar Web 应用程序访问.

在有许多开发人员的环境中,您应该运行构建服务器(例如 Hudson 或 Jenkins),它执行自动声纳分析作为夜间构建的一部分。其他时间表也是可能的,但开发人员应该知道他们何时可以期待服务器端分析结果的更新。自动分析的结果可以通过声纳 Eclipse 插件显示在单个开发人员的 Eclipse 编辑器中。

Sonar 的架构文档非常少。我一直在寻找一张图片来可视化我刚刚描述的内容,但找不到...

于 2013-11-15T19:08:31.713 回答