SonarQube之采购选型参考

简介: SonarQube是DevOps实践中主流的一款质量内建工具,过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar

SonarQube是DevOps实践中主流的一款质量内建工具,过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。

通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。一般情况下,社区版还是可以满足大部分场景的,即便是C/C++社区也是有其他开源插件的。

工作原理

SonarQube 并不是简单地将各种质量检测工具的结果(例如 FindBugs,PMD 等)直接展现给客户,而是通过不同的插件算法来对这些结果进行再加工,最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理。 SonarQube 在进行代码质量管理时,会从图 1 所示的七个纬度来分析项目的质量。

SonarQube 可以支持 25+ 种编程语言,针对不同的编程语言其所提供的分析方式也有所不同: 对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能; 对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能,比如 java 中的 class file 和 jar 和 C# 中的 dll file 等; 对于某些特定的编程语言,SonarQube 还可以提供对于代码的动态分析功能,比如 java 和 C# 中的单元测试的执行等。

远程客户机可以通过各种不同的分析机制,从而将被分析的项目代码上传到 SonarQube server 并进行代码质量的管理和分析,SonarQube 还会通过 Web API 将分析的结果以可视化、可度量的方式展示给用户

软硬件要求

1. 硬件上对磁盘读写性能要求高,服务涉及elasticsearch索引,IO读写和分析的代码量直接影响sonarqube性能;实际生产环境建议使用专用高速I/O存储

2.  SonarQube server 不支持32位,但 SonarQube scannner支持32位

3.  SonarQube server 仅支持Java11; SonarQube scanners 同时支持Java8&11

4.  数据库支持PostgreSQL, MSSQL Server, Oracle, 不再支持Mysql

版本分类

类型

全称

说明

CE

Community Edition

社区版

DE

Developer Edition

开发版(具有CE版所有特性)

EE

Enterprise Edition

企业版(具有DE版所有特性)

DCE

Data Center Edition

数据中心版(具有EE版所有特性)

特性费用对比

https://www.sonarsource.com/plans-and-pricing/community/

https://www.sonarsource.com/plans-and-pricing/developer/

https://www.sonarsource.com/plans-and-pricing/enterprise/

https://www.sonarsource.com/plans-and-pricing/data-center/

类型

价格

LOC

CE

免费

-

DE

120欧元-5万欧元

10万行代码-20M行代码

EE

1.5万欧元-18万欧元

1M行代码-100M行代码

DCE

10万欧元-上不封顶

20M代码-

CE-社区免费版本

除了支持15种编程语言,CE版还就有如下特性

  • 支持5种IDE
  • 支持60+的插件
  • 支持SonarLint
  • 支持Quality Gate
  • 快速确认近期修改代码的问题

开源版本不支持一个项目多分支的形式,只能按照特性分支的名称来生成相对应的扫描项目(会产生很多Sonarqube项目)。

解决方案:假如这个项目有F1,F2等特性分支,在每次对其中特性分支构建扫描时会配置sonar扫描参数(projectName)为 “服务名称_特性分支名称”,这样相当于每个特性分支都对应一个扫描项目。但又间接的带来了一些问题。

  • 每个特性分支生成一个项目,假如特性分支被删除呢?或者分支很多呢?
  • 对于SonarQube管理员来说很难管理,增加了任务负担。

DE-开发者版本

相较于CE版,增加了C/C++、Objective-C、T-SQL、ABAP、PL/SQL和Swift等,详细信息如下所示:

DE版具有CE版所有特性,在此基础之上,该版本还有如下特性增强:

  • 支持22种编程语言
  • 支持Pull Request的分支代码分析
  • 安全性的增强:Security Hotspots & Security Vulnerabilities的全面支持
  • 支持SonarLint的智能提示,更好地与IDE进行集成

EE-企业版本

相较于DE版,增加了Apex、COBOL、PL/1、RPG和VB6等五种,详细信息如下所示:

EE版具有DE版所有特性,在此基础之上,该版本还有如下特性增强:

  • 支持27种编程语言
  • 支持对于Portfolio的管理
  • 提供OWASP / SANS的安全报告
  • 提供可配置的SAST 分析引擎

DCE-数据中心版本

EE版具有EE版所有特性,此版本主要对于高可用性和横向扩展性有更好的支持。

如何计算费用?

Sonarqube是按照扫描的行数进行计费的,以年为单位进行订阅。关于行数如何解读?假如你买100W行扫描量,那么这个量是被所有项目共享的,但扫描的行数超过100W行,分析服务将会终止。当然如果你删除项目重置,扫描量就会恢复。

相关文章
|
4月前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
83 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
7月前
|
运维 监控 小程序
应用研发平台EMAS产品常见问题之构建成功后成品是 0M如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
2月前
|
消息中间件 前端开发 安全
简化部署流程:Rainbond让Jeepay支付系统部署更轻松
简化部署流程:Rainbond让Jeepay支付系统部署更轻松
|
数据可视化 测试技术 API
ShowDoc部署与应用:文档管理的最佳实践
在项目开发和协作中,文档管理扮演着至关重要的角色。ShowDoc作为一款卓越的开源文档管理工具,不仅提供强大的文档管理功能,还具备简单易用的协作和部署特性。我们的项目团队最初选择了ShowDoc作为文档管理工具,用以促进前后端协作。
1079 2
ShowDoc部署与应用:文档管理的最佳实践
|
7月前
|
开发工具 git 开发者
企业级项目代码管理流程
使用Sourcetree(是一个Gui图形化用户界面,全拼Graph User interface)来进行操作
260 0
|
运维 Kubernetes jenkins
基于Jira的运维发布平台的设计与实现
基于Jira的运维发布平台的设计与实现
基于Jira的运维发布平台的设计与实现
|
Kubernetes API 开发工具
开发 k8s 管理平台 - k8sailor - 01. 使用 k3s 快速搭建项目环境
开发 k8s 管理平台 - k8sailor - 01. 使用 k3s 快速搭建项目环境
202 0
开发 k8s 管理平台 - k8sailor - 01. 使用 k3s 快速搭建项目环境
|
SQL 运维 Kubernetes
在Rainbond中实现数据库结构自动化升级
Rainbond 这款产品一直致力于打通企业应用交付的全流程,这个流程中不可或缺的一环是企业应用的不断升级、迭代。Rainbond 特有的能力,是可以将囊括多个服务组件的企业应用系统进行打包,并执行一键安装、升级以及回滚的操作。上述的内容仅仅解决了应用程序本身的版本控制问题。企业应用的升级迭代流程想要完全实现自动化,还需要能够自动处理数据库表结构(Schema)的版本控制。经过不断的探索,Rainbond 首先在源码构建领域借助业界领先的 Liquibase 集成了云原生时代的数据库 Schema 版本管理的能力。
在Rainbond中实现数据库结构自动化升级
|
Kubernetes 测试技术 虚拟化
在阿里,我们如何管理测试环境
作者:林帆(花名金戟),阿里巴巴研发效能部技术专家 相关阅读:在阿里,我们如何管理代码分支 前言 阿里的许多实践看似简单,背后却蕴涵着许多思考,譬如测试环境的管理。 互联网产品的服务通常是由Web应用、中间件、数据库和许多后台业务程序组成的,一套运行环境就是一个自成一体的小生态。
23625 0
在阿里,我们如何管理测试环境