SonarQube除了开源的社区版之外,还有开发者版、企业版和数据中心版等不同的发行版本,以满足不同类型的客户需求。以下是根据SonarSource官网整理的各个版本之间的差异。
社区版 |
---|
-60多个插件 |
-DevOps工具链集成 |
-代码质量和安全 |
-支持15种语言 |
-支持5种IDE |
社区版就是通常大家所说的开源版本的SonarQube,通过其核心的代码质量和安全问题的扫描能力,以及质量门禁的功能,成为了目前代码静态扫描事实上的标准。
,
此外,开源版支持15种常见的开发语言,尤其是在互联网行业中广泛使用Java和JavaScript的情况下,通过与构建工具(如maven/gradle插件)以及持续集成工具(如Jenkins)的集成,基本能满足个人和团队的日常代码扫描所需。
当然,在开源社区版本的基础上,SonarQube还提供了开发者版。在全部社区版功能的基础上,新增了以下的功能
开发者版 |
---|
Branch analysis(分支分析) |
Pull Request decoration(PR/MR注释) |
Detection of injection vulnerabilities(注入漏洞探测) |
SonarLint notifications(SonarLint通知) |
22 Programming Languages Covered(尤其新增了c/c++/plsql) |
Developer Edition is available up to 20M Lines of Code. |
对于金融行业来说,开发者版本支持了C/C++以及Oracle PL/SQL这三种语言,这样就为核心交易类系统以及遗留的业务系统展开代码扫描扫清了障碍。
另外一个非常有用的功能是多分支分析。社区版主要适合主干开发的团队,而目前Gitlab/Github-Flow以及特性分支等也非常流行。具备多分支分析能力,让SonarQube与现有团队的工作模式更加贴合。
除了分支之外,在推行质量门禁,尤其是代码提交触发门禁的团队中,能够在代码评审(Pull Request或者Merge Request)时,能自动触发SonarQube代码扫描,并在GitHub或者GitLab(如下图)中提供(增量)质量门禁度量结果作为代码评审的参考结果,是非常有效的一种质量内建方式。
从这个官网提供的案例来看,本次示例提交新增了3个问题,并且导致了覆盖率的下降,进而导致未通过质量门禁的度量。团队完全可以设置将此类未通过质量门禁的合并请求拒绝掉。
另外,SonarLint在社区版中只能通过主动查询来获取当前项目的扫描结果和质量门禁状态,而在开发版中,则启用了SonarQube的事件主动推送功能。
这样,可以让开发人员更加专注于在IDE中工作,而不用通过邮件或者主动浏览SonarQube网页链接的方式获取扫描结果。
开发者版本基于社区版本提供了很多非常有价值的功能和特性。以其小几万元价格/年来说,可以是非常良心了。当然,这个版本最大的问题是,最多只能支持扫描2M行代码(以Master分支累计)。
对于大型跨国公司或者是集团性企业来说,开发者版就有些不够用了。当然,只要肯花钱,SonarQube也还有适用的版本。
企业版 |
---|
Portfolio Management(项目集管理) |
Executive Reporting(管理层报告) |
Security Reports(安全报告) |
Project Transfer(项目汇聚) |
27 Programming Languages Covered |
Enterprise Edition is available up to 100M Lines of Code. |
从上述特性清单来看,企业版主要是关注于管理层面的增强了。例如,多个应用可以汇聚成一条产品线或者事业部,通过其项目集管理也可以把若干个SonarQube项目汇聚到一个统计口径之下。
类似的功能还有项目汇聚功能。类似监控系统中可以将各个子公司监控中心的数据上报到集团监控中心或者行业云监控中心类似,企业版SonarQube也支持将各个SonarQube的结果汇聚到一个集中的SonarQube中,进行统一的管理和统计)。
最后,让我们来观摩下使用企业版的金主们
除了在表格中提到的内容之外,实际上数据中心版本还有一个在性能上的巨大提升,也就是支持多个 CE worker。在社区版或者是开发者版本中,同一时间只能有一个项目在被SonarQube进行分析。如果服务的项目团队过多,并且每次代码提交都会触发构建,则经常会因为这个原因导致扫描结果迟迟出不来,甚至发生由于某些巨大项目的扫描分析时间过长导致阻塞了整个SonarQube的情况。
而在企业版中,可以设置多个计算引擎(其实是对接ES集群)的方式,大幅提升SonarQube的性能。
你以为这就结束了吗?
不,只要肯花钱,打怪的装备还可以再升级。
这个版本只需要一下一个图来来介绍,
关注高可用和可扩展性。
最后来个合影
开源社区也提供了不少插件来弥补开源版本的能力不足。例如
多分支支持
C/C++语言支持
PL/SQL语言支持
当然,也有不少团队通过二次开发,对SonarQube社区版的能力进行增强。