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

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

什么是 SonarQube?

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

image20240919105025868.png

SonarQube 具有以下功能:

SonarQube架构

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

1. SonarQube Server(服务器)

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

2. SonarQube Database(数据库)

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

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

3. SonarQube Plugins(插件)

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

4. SonarQube Scanners(扫描器)

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

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即可

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

回帖
请输入回帖内容 ...