软件测试|SonarQube 安装、配置及 JaCoCo、Maven 集成

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 软件测试|SonarQube 安装、配置及 JaCoCo、Maven 集成


SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。此外, SonarQube 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
官方网址:https://www.sonarqube.org/
通过插件形式,可以支持包括 Java,C#,C/C++、PL/SQL、Cobol、JavaScrip、Groovy、Ruby 等二十五种编程语言的代码质量管理与检测,针对不同的编程语言其所提供的分析方式也有所不同:对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能;对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能。
SonarQube 支持多种客户端集成方式,包括但不限于 Scanner 客户端、Ant、Gradle、Maven、Jenkins、IDEA 插件等。比较常用的为 Gradle 和 Maven。
SonarQube 并不是简单地将各种质量或覆盖率检测工具的结果(例如 CheckStyle、JaCoCo 等)直接展现给客户,而是通过不同的插件算法来对结果进行再加工,并最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理,以便进行有针对性的代码修复或重构。
SonarQube 在进行代码质量管理时,会从以下的七个纬度对项目代码质量进行分析。
Sonar 实际上是一个 Web 系统,展现了静态代码扫描的结果,结果是可以自定义的,而真正实现代码扫描的是 Sonar Scanner 这个工具,另外同时支持多种语言的原理是它的扩展性,通过插件实现的,也就是 Java Jar 架包,可以在 Sonar 平台上在线安装或者离线安装。
1.已安装 JDK1.8 环境
2.已安装 Maven(用于后期与 SonarQube、JaCoCo 的集成)
3.已安装 MySQ L数据库(Sonar 默认的数据库是自带 H2 数据库,是很小的嵌入式数据库引擎,这里的配置换成了 MySQL,为了方便通过数据库客户端进行数据查询)
1.下载 SonarQube,地址为:
http://www.sonarqube.org/downloads/
2.配置数据库(下面的SQL是指定了schema为sonar,password为sonar,其中第四条SQL是localhost是因为MySQL安装在本地)
3.安装 SonarQube
I. 将下载的 sonar-3.7.zip 包解压至 Windows某个路径,如 D:\Tools\sonar(如是其他OS,请选择对应路径,如Linux的/usr/local/等)。
II. 修改 sonar.properties
在 /conf/sonar.properties 文件中,配置数据库设置(默认已经提供了各类数据库的支持这里使用 MySQL,因此取消 MySQL 模块的注释),同时因为端口冲突而改成端口为 11000。
III.在 /bin/ 目录下,运行 /windows-x86-64/StartSonar.bat (因为本 demo 是在 win10 64位安装的,如果是 Linux 的话,运行 nohup bash sonar.sh start &)
IV. 访问 http://localhost:11000,如果不是本机就输入 http://[remote IP]:11000,如果你看到下图所示即证明配置成功。
4.用 admin/admin(默认)进行登录,并安装汉化包
Chinese pack installation
Chinese pack restart
Chinese pack restart confirm
Well done!

  1. 下载Sonar Scanner,地址为:

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

  1. 将下载的 sonar-scanner-cli-3.3.0.1492-windows.zip 包解压至 Windows 某个路径,如D:\Tools\sonar(如是其他OS,请选择对应路径,如Linux的/usr/local/等)
  2. 修改环境变量

新增变量:
SONAR_SCANNER_HOME = D:\Tools\sonar\sonar-scanner-3.3.0
修改Path变量:增添
%SONAR_SCANNER_HOME%\bin\

  1. 安装Sonar Scanner

I. 将下载的 sonar-3.7.zip 包解压至 Windows 某个路径,如 D:\Tools\sonar(如是其他 OS,请选择对应路径,如 Linux的/usr/local/ 等)。
II. 修改 sonnar-scanner.properties
在 /conf/sonar-scanner.properties 文件中,设置SonarQube服务器。
III. 到你想检测的工程根目录下新建文件sonar-project.properties,文件内容如下?,文件中的参数配置,参考Sonar Analysis Parameters这篇文章。
在命令行模式下,在工程的根目录下键入命令“sonar-scanner”,你会看到以下日志:
运行 sonar-scanner
接着,重新登录 SonarQube 平台,检测的结果已经在平台上展现出来
从上图你可以看出来,连单元测试覆盖率的统计也生成出来了,主要原因为在该maven项目之前已经集成了Jacoco插件(具体Maven与Jacoco的集成请参考我的另外一篇文章)。
1.该项目为maven项目,并且Jacoco已经通过POM文件集成到项目中,具体步骤请参考我的另外一篇文章。
2.该集成方案其实还是首先通过maven package 命令去生成对应的覆盖率报告,然后通过sonar scanner直接使用该覆盖率报告并通过一定算法加工并展示到SonarQube的界面上去。
1.在项目根目录的 sonar-project.properties 文件中,增添以下配置内容:
2.在 SoarQube 登录 admin,并通过在【配置-应用市场】下找到Jacoco插件并安装和重启。

  1. 在项目根目录下,运行 mvn package,当build成功的时候Jacoco的结果就会产生在target/site/jacoco文件夹下。

maven package

  1. 接着,在项目根目录下运行命令 sonar-scanner,如果看到以下结果证明已经覆盖率已经可以在SonarQube上查阅。

sonar scanner
以上,后续继续补充如何通过 SonarLint 整合到 IntelliJ IDEA,并同时如何整合到 Jenkins 实现自动化测试。
本文遵循 CC 4.0 BY-SA 版权协议,原文链接:
https://blog.csdn.net/justyman/article/details/87563883

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
SQL Java 关系型数据库
Dataphin功能Tips系列(53)-离线集成任务如何合理配置JVM资源
本文探讨了将MySQL数据同步至Hive时出现OOM问题的解决方案。
123 5
|
7月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
755 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
5月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
331 27
|
5月前
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
488 18
|
5月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1233 4
|
6月前
|
缓存 前端开发 API
(网页系统集成CAD功能)在线CAD中配置属性的使用教程
本文介绍了Mxcad SDK在线预览和编辑CAD图纸的功能及配置方法。通过Vite、CDN或Webpack实现集成,用户可自定义设置以满足项目需求。主要内容包括:1)`createMxCad()`方法的初始属性配置,如画布ID、WASM文件路径、字体加载路径等;2)`MxFun.setIniset()`方法提供的更多CAD初始配置;3)`McObject`对象API用于动态调整视图背景色、浏览模式等。此外,还提供了在线Demo(https://demo2.mxdraw3d.com:3000/mxcad/)供用户测试实时效果。
|
7月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
891 0
|
7月前
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th="http://www.thymeleaf.org"`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
290 0
|
3月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
324 3
|
2月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
209 0

推荐镜像

更多