写点什么

代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成

  • 2022 年 9 月 06 日
    北京
  • 本文字数:2186 字

    阅读完需:约 7 分钟

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.安装 SonarQubeI. 将下载的 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 installationChinese pack restartChinese pack restart confirmWell done!

下载 Sonar Scanner,地址为:


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

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

修改环境变量


新增变量:


SONAR_SCANNER_HOME = D:\Tools\sonar\sonar-scanner-3.3.0


修改 Path 变量:增添


%SONAR_SCANNER_HOME%\bin\

安装 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 插件并安装和重启。

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


maven package

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


sonar scanner


以上,后续继续补充如何通过 SonarLint 整合到 IntelliJ IDEA,并同时如何整合到 Jenkins 实现自动化测试。


点击下方链接免费领取:性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档


http://qrcode.testing-studio.com/f?from=infoQ&url=https://ceshiren.com/t/topic/22265

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019.10.23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成_软件测试_霍格沃兹测试开发学社_InfoQ写作社区