测试开发系列之代码质量管理 SonarQube

发布于 更新于
本文目录
  1. 什么是 SonarQube?
  2. SonarQube架构
  3. 1. SonarQube Server(服务器)
  4. 2. SonarQube Database(数据库)
  5. 3. SonarQube Plugins(插件)
  6. 4. SonarQube Scanners(扫描器)
  7. SonarQube安装与配置
  8. 1. 下载 SonarQube 服务器
  9. 2. 启动 SonarQube 服务器
  10. 3. 访问 SonarQube Web 界面
  11. 4. SonarQube 页面汉化
  12. 5. SonarQube关联MySQL数据库

技术文章测试开发

在现代软件开发中,代码质量对项目的成功至关重要。随着项目规模的扩大,代码的复杂性和维护难度也随之增加,这使得保持代码的可读性、可维护性和安全性是相当大的挑战。SonarQube 作为一款优秀的代码质量管理工具,通过静态分析自动检测代码中的问

在现代软件开发中,代码质量对项目的成功至关重要。随着项目规模的扩大,代码的复杂性和维护难度也随之增加,这使得保持代码的可读性、可维护性和安全性是相当大的挑战。SonarQube 作为一款优秀的代码质量管理工具,通过静态分析自动检测代码中的问题,能够帮助开发者提前发现潜在的缺陷和漏洞,提升代码质量。

什么是 SonarQube?

SonarQube 是一个开源的、企业级的代码质量管理平台,它通过静态代码分析的方式,检测项目中的代码异味、重复代码、安全漏洞和复杂度等问题。SonarQube 支持多种编程语言(如 Java、C++、Python、JavaScript、Go 等),并且可以与多种 CI/CD 工具(如 Jenkins、GitLab CI)进行集成,实现自动化的代码质量检测。

image20240919105025868.png

SonarQube 具有以下功能:

  • 静态代码分析:通过分析源代码,检测潜在的质量问题,如重复代码、不必要的复杂度和潜在的漏洞。

  • 代码覆盖率:结合单元测试,SonarQube 可以跟踪测试覆盖率,确保新代码被充分测试。

  • 质量门槛(Quality Gates):通过预设的规则,自动评估代码质量是否满足要求,保障项目的代码基准。

SonarQube架构

SonarQube平台由四部分组成: architecturescanning.png

1. SonarQube Server(服务器)

SonarQube Server 是整个系统的核心部分,负责接收来自客户端(如 SonarQube Scanner)提交的扫描结果,并将这些结果存储和展示在 Web 界面中。服务器本身主要由以下几个模块组成:

  • Web Server(Web 服务器):提供 Web 界面,用户可以通过浏览器查看项目的代码质量报告、设置项目、配置质量门槛(Quality Gates)等。

  • Compute Engine(计算引擎):处理并分析代码扫描结果,生成质量报告,并计算诸如代码覆盖率、重复率等信息。

2. SonarQube Database(数据库)

存储代码质量的历史记录、配置和用户信息。SonarQube 支持多种数据库,如 PostgreSQL、MySQL、Oracle 等。

需要注意的是:SonarQube在 7.9 之后将停止对 MySQL 的支持。

3. SonarQube Plugins(插件)

插件是 SonarQube 的扩展机制,可以通过插件支持更多的编程语言扫描、增加新的规则和分析引擎,甚至集成其他开发工具。

  • 语言插件:支持多种编程语言的分析,如 Java、C++、Python、JavaScript、Go 等。

  • 规则插件:增加新的代码分析规则,如安全扫描、性能检测等。

  • 集成插件:支持与其他工具的集成,如 Jenkins、GitLab CI等。

4. SonarQube Scanners(扫描器)

SonarQube Scanner 是一个独立的客户端工具,负责分析项目代码并将结果提交到 SonarQube Server。它通过静态分析代码,检测代码中的问题,并生成相应的报告。SonarQube Scanner 可以在本地、CI/CD 环境或 IDE 中使用。

  • 命令行扫描器:最常用的工具,通过命令行运行 sonar-scanner 命令,扫描指定项目的代码。

  • 其他扫描器:SonarQube 还提供特定语言或构建工具的扫描器,如 Maven Scanner、Gradle Scanner 和 Ant Scanner 等。

SonarQube安装与配置

在使用 SonarQube 之前,首先需要安装 SonarQube 服务器,并配置 SonarQube Scanner(扫描器)来执行代码扫描。

1. 下载 SonarQube 服务器

从 SonarQube 官方网站下载适合的版本。这里选择的是7.8的版本(为了使用MySQL数据库)

https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip

2. 启动 SonarQube 服务器

解压下载包后,双击StartSonar.bat启动服务器(如果是Linux系统则是进入到linux-x86-64目录下执行./sonar.sh命令):

image20240919154556592.png

3. 访问 SonarQube Web 界面

SonarQube服务启动之后默认监听端口是9000,在浏览器中打开 http://127.0.0.1:9000,可以访问 SonarQube 的 Web 界面,默认用户名和密码都是 admin。

image20240919154333590.png

4. SonarQube 页面汉化

sonar默认语言是英文,对于很多小伙伴不够友好,可以在sonar里面安装汉化插件:选择Administration->Marketplace->搜索Chinese,这里需要注意:由于我们安装的是7.8版本SonarQube,这里的汉化插件版本不匹配,我们可以从下面的网址中找到对应的匹配版本:https://github.com/xuhuisheng/sonar-l10n-zh

image20240919155727564.png

这里我们选择1.28版本的汉化插件,下载jar包:https://github.com/xuhuisheng/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.28

将jar包拷贝到sonarqube-7.8\extensions\plugins目录下,重启SonarQube即可

这里需要注意直接关闭StartSonar.bat之后需要在后台杀掉相关的Java进程再重新启动,不然重新启动Sonar会失败。

5. SonarQube关联MySQL数据库

默认SonarQube使用的是H2数据库,Sonar可以支持MySQL数据库,只需要在sonarqube-7.8\conf\sonar.properties配置文件中配置JDBC相关的链接信息即可

image20240919162027581.png
sonar.jdbc.username=用户名
sonar.jdbc.password=密码
sonar.jdbc.url=jdbc:mysql://IP地址:端口号/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

在MySQL数据库中新建sonarqube表,重启Sonar之后能够看到sonarqube表已经初始化:

image20240919162817265.png

来源:testingpai

继续阅读