内容简介:SonarQube 由4部分构成:
SonarQube 是一个开源的代码分析平台,用来持续分析和评测代码的质量,支持检测 Java 、JavaScript、C#、C、C++ 等二十几种编程语言。通过 SonarQube 可以检测出项目中潜在的Bug、漏洞、代码规范、重复代码、缺乏单元测试的代码等问题,并提供了 UI 界面进行查看和管理。
架构
SonarQube 由4部分构成:
-
SonarQube Server
SonarQube Server 会启动3个主要进程:
Web Server:UI 管理界面
Search Server:基于 Elasticsearch 的搜索服务
Compute Engine Server:计算引擎服务,进行代码分析并保存到SonarQube Database
-
SonarQube Database
存储 SonarQube 实例的配置信息,项目、视图等的快照信息
-
SonarQube Scanners
分析项目代码,可在构建/持续集成服务器上运行一个或多个
-
SonarQube Plugins
SonarQube 插件管理
集成
以上是官方提供的流程图,官方提供了支持不同 IDE 的 SonarLint 插件 ,插件会在编码过程中对代码进行分析,从而促使在开发阶段就能提高代码的质量。理论上我们应该遵循分析结果,乖乖的优化代码,但如果开发人员不按套路,不进行优化或不安装 SonarLint,非要把代码提交到 SCM(如: git, SVN, TFVC),一种方式可以在合并管道中加入代码检测环节,有问题直接拦截,提交失败,不过这有点过于粗暴了,很多情况下确实没这个必要;另一种方式是允许代码暂时提交到代码库,进入代码库后再次进行分析,有问题再回头优化( 代码库是必经之路,逃也逃不掉 )。
对代码库中的代码进行分析之前,我们需要搭建持续集成工具(如:Jenkins),并在 工具 中集成 SonarQube Scanners,根据持续集成工具设置的条件会自动触发拉取和 Build 代码,然后经过 SonarQube Scanners 分析并将分析报告发送到 SonarQube Server,SonarQube Server 对分析报告进行处理并保存到 SonarQube Database,同时可将分析报告发送给相关负责人进行 Review ,最终我们可以通过 UI 界面进行查看分析结果,开发人员对有问题的代码再次进行优化,如此循环。
环境要求
主要是两个要求,具体可参考 Prerequisite
- JDK 8
- MySQL (>=5.6 && <8.0) (也支持其他数据)
安装 SonarQube Server
- 下载 SonarQube ,一般情况使用社区版,其他版本可以试用,但最终需要 money
-
解压后,在 bin 文件夹中选择匹配的操作系统启动 SonarQube server
# On Windows, execute: .\bin\windows-x86-xx\StartSonar.bat # On other operating system, execute: bin/[OS]/sonar.sh console
从启动日志中可以看出 SonarQube server 依赖于 Elasticsearch,但并不需要单独下载,SonarQube 的下载包内已包含,如果想复用之前安装过的 Elasticsearch,请根据需要调整配置文件 conf/sonar.properties 中 Elasticsearch 部分。
-
启动成功后访问: http://localhost:9000 ,默认登录账号/密码:admin/admin
配置 SonarQube Database
安装后 MySQL 后,创建数据库 sonar,修改 SonarQube 配置文件 /conf/sonar.properties MySQL相关部分,重启后 sonar 数据库中会创建部分相关的表。
#----- MySQL >=5.6 && <8.0 # Support of MySQL is dropped in Data Center Editions and deprecated in all other editions # Only InnoDB storage engine is supported (not myISAM). # Only the bundled driver is supported. It can not be changed. sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.jdbc.username=root sonar.jdbc.password= sonar.sorceEncoding=UTF-8
安装 SonarQube Scanners
选择对应的操作系统版本 下载 SonarQube Scanners ,下载后可将 bin 目录路径加入 Path 中,之后直接通过 sonar-scanner 全局命令执行代码分析。
对 JavaScript 项目进行代码分析
下载 JavaScript 项目代码 ,在项目根目录下创建 sonar-project.properties:
在 sonar-project.properties 添加配置如下:
# Sonar项目标识,在 SonarQube实例下必须唯一 sonar.projectKey=test # 在 SonarQube UI 中显示的项目名称 sonar.projectName=ApiDoc # 项目版本 sonar.projectVersion=1.0 # 项目代码与 sonar-project.properties 文件的相对路径 sonar.sources=. # 代码文件的编码 sonar.sourceEncoding=UTF-8 # 排除不参与代码分析的文件或目录 sonar.exclusions=node_modules/**/*,.idea/**/*
在项目根目录下执行命令:
sonar-scanner
执行成功后,再次访问: http://localhost:9000 ,出现一个 ApiDoc 项目的分析概要,并提示有一个不规范问题,测试覆盖率 0。
注意:日志中的 ”Analysis report compressed in 205ms, zip size=518 KB“说明了压缩后的分析报告大小,最终这部分数据会存储到 MySQL,MySQL 默认接受的最大数据包为 4M,如果压缩包过大,这里的提交就会失败,这时候需要修改 MySQL 的 max_allowed_packet 的值。
修复掉不规范问题后重新执行命令 sonar-scanner ,结果如下:
同时在 MySQL 的 sonar 数据库中又会自动创建相关的表,并对分析结果进行存储。
以上通过对本地目录下的一个 JavaScript 项目进行分析测试,实际情况应该是基于 SCM ,并配合持续集成工具进行自动化代码分析,下篇介绍。
参考链接
以上所述就是小编给大家介绍的《SonarQube 搭建代码质量管理平台(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- SonarQube 搭建代码质量管理平台(二)
- 07项目质量管理(200326)
- 敏捷开发中如何做质量管理?
- SonarQube 7.0 发布,代码质量管理平台
- SonarQube 7.1 发布,代码质量管理平台
- 原 荐 SonarQube+Scanners代码质量管理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Node.js in Action
Mike Cantelon、Marc Harter、TJ Holowaychuk、Nathan Rajlich / Manning Publications / 2013-11-25 / USD 44.99
* Simplifies web application development * Outlines valuable online resources * Teaches Node.js from the ground up Node.js is an elegant server-side JavaScript development environment perfect for scal......一起来看看 《Node.js in Action》 这本书的介绍吧!
XML、JSON 在线转换
在线XML、JSON转换工具
Markdown 在线编辑器
Markdown 在线编辑器