SonarCloud 和 SonarQube 都是有价值的工具,可帮助您在项目中编写干净、高质量的代码。那么,哪种产品最适合您和您的团队?
在本文中,我将详细介绍每种产品的几个重要方面,以便您在尝试之前做出明智的决定。在我们的旅程中,我们将讨论与启动和运行相关的注意事项以及与可用功能和可扩展性相关的元素。我们还将介绍语言支持和底层静态分析引擎。
两种产品基本上涵盖相同的 语言 (SonarCloud 不支持 PL/I、RPG 或 VB6)。它们都共享相同的底层静态分析引擎来捕获错误、漏洞和代码异味并生成有价值的代码质量指标。
主要区别之一在于每个产品的托管和管理方式。如果您的团队、代码和工作流程完全基于云(例如 GitHub.com+Travis),那么 SonarCloud 是一个不错的选择。
SonarCloud 可轻松与 GitHub.com、Azure DevOps Services、Bitbucket.com 和 GitLab.com 集成。SonarCloud 由 SonarSource 在 AWS 中托管,是在几分钟内开始扫描代码的最简单路径。SonarSource 为 SonarCloud 完成所有繁重的工作,因此您不必担心安装或维护。作为 SaaS 产品,SonarCloud 可让您立即访问新特性和功能。
为了让您快速启动和运行,SonarCloud 具有对许多流行语言的自动分析功能。此自动扫描功能非常适合需要可操作的代码质量指标而无需承担工具配置负担的团队。对于某些用例,完全设置分析配置将带来更好的开发人员体验并“解锁”更多 SonarCloud 功能。
另一方面,SonarQube 以及支持的数据库安装在您自己的服务器或自我管理的云环境中。安装后,SonarQube 可以轻松与您的GitHub、 Azure DevOps、 Bitbucket 或 GitLab实例集成 。如果您有一个混合环境,将代码存储在云中并依赖本地管理的 CI/CD 管道,SonarQube 还可以与所有这些代码管理工具的云版本集成。
走 SonarQube 路线意味着您将亲自安装和维护您的环境。您还将负责在新版本发布时安装它们。平均 每两个月就有一个新的 SonarQube 版本。不升级意味着您将错过新特性、功能和非阻塞性错误修复。在我们讨论版本时,请务必注意 SonarQube 提供 长期支持 (LTS) 版本。SonarSource 大约每 18 个月发布一次 SonarQube LTS。对于 LTS,重点是稳定性和可靠性,并且阻止程序错误被向后移植到点版本中。
SonarQube 开发者版和企业版 (EE) 包括一些可能对您组织的特定用例有价值的附加企业功能。此功能分为五个主要类别:身份验证、治理、执行报告、多存储库支持和可扩展性。
借助 SonarCloud 和所有版本的 SonarQube,您可以使用现有的 DevOps 平台凭据通过 GitHub、Bitbucket、Azure 和 GitLab 进行身份验证。SonarQube Developer Edition 还增加了使用支持 SAML、LDAP 和 SCIM 协议的第三方工具进行身份验证的功能。
SonarQube 企业版包括应用程序和产品组合功能,它们是可视化容器,允许您以跟踪业务目标的方式组织项目。应用程序允许您将所有一起发布的项目聚合到一个视图中。组合是相似的,允许您围绕组织或业务目标聚合项目。例如,您可以创建一个组合来跟踪所有前端项目或地理团队的所有项目。目前,SonarCloud 没有应用程序或产品组合功能
SonarQube 企业版还包括执行级报告功能。这些报告与您的产品组合紧密结合,让您深入了解可靠性、可维护性和可发布性等关键指标。此外,还有安全报告,包括 PCI DSS、OWASP ASVS、OWASP Top 10 和 CWE Top 25 的覆盖范围。
目前,SonarCloud 不包含执行报告功能。SonarQube 的诞生早在十多年前。随着产品的成熟,我们确定了一个“企业”用例,它不同于以开发人员为中心的“核心”功能用例。对于大型组织来说,拥有需要从更广泛的视角和背景进行衡量的“非开发人员”受众是很常见的。为了满足报告和业务 KPI 的需求,我们向 SonarQube 添加了一组“治理”功能。
对于 SonarCloud 来说,主要关注的是开发人员的工作流程以及为开发团队在现有 DevOps 平台(GitHub、Azure、Bitbucket、GitLab)环境中带来价值。因此,SonarCloud 目前尚未解决“企业”用例。
对于需要连接到多个代码存储库实例的组织来说,需要使用 SonarQube 企业版。例如,单个 SonarQube Developer Edition 实例最多可以连接 4 个存储库,只要它们都是不同的 SCM 工具(即 1x GitHub、1x Bitbucket、1x GitLab 和 1x Azure DevOps)。如果您需要连接到多个 DevOps 平台实例,则需要 SonarQube Enterprise Edition。
在 SonarCloud 中,您只能与单个 SCM 工具和单个 SCM“组织”绑定。(请注意,Bitbucket 将它们称为工作区,GitLab 将它们称为组)。
最后,我将谈谈可扩展性。SonarSource 社区开发和维护了一个广泛且强大的 SonarQube 插件库。这些插件围绕更大的生态系统增强了 SonarQube 的核心功能。这方面的例子包括额外的编程语言支持、与不太主流的 SCM 引擎的集成以及区域语言本地化。
目前,SonarCloud 尚未开放社区的第 3 方插件贡献。同样,其原因又回到了产品焦点。SonarCloud 的愿景是提供开发人员优先的干净代码工具以及集成附加功能的 DevOps 平台。
换句话说,我们知道 DevOps 平台非常注重构建有价值的开发人员工作流程体验,而 SonarCloud 的目的是增强和扩大这一价值。将 SonarCloud 开放给第三方集成将会偏离这一愿景。
Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图