IBM Cloud Docs
配置 SonarQube 扫描

配置 SonarQube 扫描

SonarQube 提供了源代码总体运行状况和质量的概述,并重点阐述了在新代码中发现的问题。 代码分析器可检测到超过 20 种代码编写语言的棘手错误,例如空指针取消引用、逻辑错误和资源泄漏。

配置 SonarQube 以持续分析和测量源代码的质量:

  1. 在 IBM Cloud 控制台中,单击菜单图标 Hamburger 图标,然后选择 DevOps。 在“工具链”页面上,单击工具链以打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。 然后,单击概述

    a. 单击添加工具

    b. 在“工具集成”部分中,单击 SonarQube

  2. 输入此 SonarQube 工具集成实例的名称。

  3. 输入在您单击工具链中 SonarQube 卡时想要打开的 SonarQube 实例的 URL。

  4. 可选: 输入用于连接到 SonarQube 服务器的用户名。

    仅当使用密码连接到 SonarQube 服务器时,才需要指定用户名。 如果是使用认证令牌进行连接,请将此字段保留为空。

  5. 输入用于连接到 SonarQube 服务器的密码或认证令牌。

  6. 如果服务器不能位于公用因特网上,请选择 高级。IBM Cloud 无法验证您提供的连接详细信息,并且将禁用需要对此服务器进行 API 访问的某些功能。 交付管道仅通过使用对该服务器具有网络访问权的专用工作程序来工作。

  7. 单击创建集成

  8. 在工具链的“概述”页面上的 第三方工具 卡上,单击 SonarQube 以查看您已连接到的 SonarQube 实例的仪表板。

将 SonarQube 添加到持续集成管道

缺省 SonarQube 实例

  • 如果 sonarqube-config 设置为 default,那么缺省情况下将使用 SonarQube 进行扫描。 此扫描以 Docker形式运行-Docker。

所使用的实例仅在运行期间可用。 因此,您无法访问仪表板。

  • 缺省情况下,管道使用仅具有有限 checks.Many 漏洞规则的 SonarQube 社区版本,并且 Community Edition未涵盖主机点问题。

  • 要验证是否在社区版本中检查了漏洞,请参阅 Sonarqube 社区问题中的线程

  • 向 CISO 注册的 SonarQube 社区 Edition 实例的缺省实现不是 ITSS 核准的 edition.SonarQube Enterprise Edition 是唯一的 ITSS 核准的版本。

要下载 SonarQube,请参阅 SonarQube Downloads

开发集群上的 SonarQube 实例

如果 sonarqube-config 设置为 cluster,那么管道将在开发集群中运行的管道期间创建 SonarQube 实例。 在静态扫描阶段成功 runs.You 可以通过端口转发在本地访问 SonarQube 仪表板。

现有 SonarQube 实例

sonarqube-config 设置为 custom,以将您自己的 SonarQube 实例添加到现有管道,将工具集成添加到工具链,然后将 SonarQube 工具集成参数添加到管道。 有关更多信息,请参阅 配置 SonarQube

参数

要运行 SonarQube 扫描,管道需要以下连续集成参数:

Table 1. Continuous integration pipeline parameters
名称 Type 描述 必需或可选
集群名称 文本 Docker 构建集群的名称。 必需
开发区域 文本 托管集群的 IBM Cloud 区域。 必需
选择性加入声纳 文本 用于启用 SonarQube 扫描的选项。 必需
sonarqube 工具集成 SonarQube 工具集成。 可选
sonarqube-config 文本 在隔离的 Docker-Docker 容器 (缺省配置) 或现有开发 Kubernetes 集群 (集群配置) 中运行 SonarQube 扫描。 或者,您可以自带 SonarQube 实例并配置 SonarQube 工具集成 (定制配置)。 选项: defaultclustercustom。 缺省值为 default。 有关更多信息,请参阅 ( 将 SonarQube 添加到持续集成管道)。 必需
选择性加入声纳热点 文本 Sonarqube 扫描以检测热点。 可选

有关管道参数的更多信息,请参阅 管道参数

如果将多个 SonarQube 工具集成添加到管道,那么可以通过更改作为工具集成参数的 SonarQube 管道参数的值来在这些集成之间进行切换。

安装在 SonarQube 中的插件

DevSecOps Pipeline 在缺省情况下使用 SonarQube V 10.0。

要了解有关预安装插件列表的更多信息,请参阅 插件

从 SonarQube 报告的问题

DevSecOps Pipeline 会过滤掉在 SonarQube 扫描期间报告的问题。 管道专门针对类型不是 CODE_SMELLBUG 的问题创建合规性说明。 管道还会跳过状态为 CLOSED 的问题。

更新质量门

如果使用管道创建的 SonarQube 实例,那么可以更新缺省质量检测点。

  1. 转至由 URL 从 static-scan 任务中的管道日志创建的 SonarQube 仪表板。

    SonarQube 仪表板
    图 1。 SonarQube 仪表板

  2. 单击 质量关卡 > 创建

  3. 使用下列其中一个选项来设置质量关卡:

    • 单击 设置为缺省值 以将新创建的质量检测点设置为缺省值。
    • 从仪表板中,选择项目,然后单击 项目设置 > 质量门 以将新创建的质量门用于项目。
  4. 指定要与项目关联的质量检测点。 此质量门将对新扫描进行评估,而质量门的结果将创建证据。

要了解有关 SonarQube的更多信息,请参阅 SonarQube 文档

使用您自己的配置文件

您可以在不使用自己的 SonarQube 实例的情况下修改缺省配置。 在要在其中创建配置文件的存储库中创建 sonar-project.properties 文件。 如果我们的脚本在存储库中检测到现有 configuration sonar-project.properties 文件,那么它将使用该文件而不是缺省文件。 有关配置文件中可能的分析参数的更多信息,请参阅此处的 分析参数

确保将正确的登录凭证和主机 URL 添加到配置文件。

使用另一静态扫描实现

您可以修改 .pipeline-config.yaml 文件以将自己的定制脚本添加到 static-scan 阶段,从而使用自己的静态扫描实现。

了解有关 SonarQube 的更多信息

要了解有关 SonarQube的更多信息,请参阅 将 SonarQube 分析集成到工具链中