SonarQube 是一个开源的代码质量管理平台,用于持续分析和评估项目源代码的质量。它通过静态代码分析,帮助开发者快速发现代码中的问题,例如重复代码、潜在的 Bug、安全漏洞、代码规范问题等,并以可视化的方式展示分析结果。
SonarQube 支持多种编程语言,包括 Java、JavaScript、Python、C#、C++ 等,能够通过插件扩展功能,例如整合 Checkstyle、FindBugs 和 PMD 等工具,从多个维度对代码质量进行检测和优化。
(不建议在 SonarQube 服务器上运行防病毒扫描程序,这可能会导致不可预测的行为。)
本文以 企业版 2025.1.4.113907 为例,在部署之前需要准备以下工具:
1、SonarQube
https://www.sonarsource.com/zh/products/sonarqube/downloads/
2、SonarQube 汉化包
https://github.com/xuhuisheng/sonar-l10n-zh
3、PostgreSQL
https://www.postgresql.org/download/
或者在
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
推荐 17 版本。
4、SonarScanner CLI 扫描器
https://docs.sonarsource.com/sonarqube-server/analyzing-source-code/scanners/sonarscanner
在“SonarScanner”处,点击左侧的“>”,即可看到要下载的文件。
直接在客户端上安装,安装完成后将 bin
目录添加到 %PATH%
环境变量。
一、安装 PostgreSQL
根据提示进行安装,留意记录下管理员密码。
如安装在:E:\SonarQube2025\PostgreSQL 下。
在命令行中执行 (并输入安装时设置的密码):
cd /d E:\SonarQube2025\PostgreSQL\17\bin psql -U postgres -h localhost -p 5432
创建用户及数据库:
-- 1. 创建 sonarqube 用户(角色) CREATE USER sonarqube WITH PASSWORD 'sonarqube'; -- 2. 创建 sonarqube 数据库并指定所有者 CREATE DATABASE sonarqube OWNER sonarqube; -- 3. 连接到新创建的数据库 \c sonarqube; -- 4. 为 sonarqube 用户授予所有权限 GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube; -- 5. 创建 schema(可选,但推荐) CREATE SCHEMA IF NOT EXISTS sonarqube AUTHORIZATION sonarqube; -- 6. 设置默认搜索路径 ALTER DATABASE sonarqube SET search_path TO sonarqube; -- 7. 授予 schema 权限 GRANT ALL PRIVILEGES ON SCHEMA sonarqube TO sonarqube; -- 8. 授予所有表的权限 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA sonarqube TO sonarqube; -- 9. 授予序列的权限 GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA sonarqube TO sonarqube; -- 10. 设置用户的默认搜索路径 ALTER USER sonarqube SET search_path TO sonarqube; -- 11. 验证权限 \dn+ \dp sonarqube.* -- 12. 退出 \q
二、SonarQube 部署
将 SonarQube 解压到指定目录,如 E:\SonarQube2025。
并将 SonarQube 汉化包放置在 E:\SonarQube2025\extensions\plugins。
三、SonarQube 配置
打开 E:\SonarQube2025\conf\sonar.properties 文件。
留意 文件中 sonar.web.port 项(默认为 9000),该端口后启动后 WEB 访问端口。
找到并编辑以下项:
#----- PostgreSQL sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube?currentSchema=sonarqube sonar.jdbc.username=sonarqube sonar.jdbc.password=sonarqube
四、启动
cd /d E:\SonarQube2025\bin\windows-x86-64 # 手动启动 StartSonar.bat # 以服务方式启动 SonarService.bat
如果你没有 Jre 环境,则
在 StartSonar.bat、SonarService.bat 文件中, rem DO NOT EDIT THE FOLLOWING SECTIONS 下增加:
REM 强制指定 SonarQube 使用 Java 17 set JAVA_HOME=E:\SonarQube2025\jres\jre_17 set PATH=%JAVA_HOME%\bin;%PATH%
五、登录
输入 http://localhost:9000,用户名和密码均为 admin。(在登录成功后要求重置密码)
六、申请授权
在“配置”中,“配置”下“License Manager”,填写授权码。
留意页面中的 server ID,这将是你的标识。
七、创建项目
支持导入项目也支持手动创建项目。
1、在“项目”中“新增项目”,并选择“手工”。输入显示名、项目标题和主分支名称。
2、在“此项目的新代码基线是什么?”,选择“使用全局设置”
3、之后在“分析方法”中,使用“本地”方式分析代码。
4、创建令牌,默认有一个名称和 30 天有效期
这时候就创建了如“Analyze “test”: sqp_52604ccbdb8780742645eb8a01e9f62b52e0373f” 点击继续。
5、在“分析你的项目”中
选择使用的“构建技术”。之后下面会提供选择“架构”或“操作系统”,并会提供要执行的命令。
如:
sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://192.168.1.200:8090" -D"sonar.token=sqp_52604ccbdb8780742645eb8a01e9f62b52e0373f"
此时,客户端已安装了 SonarScanner 扫描器,并添加扫描器的 bin 目录到环境变量中。
命令行进入要待检测的目录,执行上述的命令即开始检测。你会看到类似以下内容:
192.168.1.200:8090" -D"sonar.token=sqp_52604ccbdb8780742645eb8a01e9f62b52e0373f" 09:35:34.852 INFO Scanner configuration file: E:\projectCode\sonar-scanner\bin\..\conf\sonar-scanner.properties 09:35:34.857 INFO Project root configuration file: NONE 09:35:34.878 INFO SonarScanner CLI 7.3.0.5189 09:35:34.882 INFO Windows 10 10.0 amd64 09:35:39.590 INFO Communicating with SonarQube Server 2025.1.4.113907 09:35:39.591 INFO JRE provisioning: os[windows], arch[amd64] 09:36:09.213 INFO Starting SonarScanner Engine... ...... 09:42:04.392 INFO More about the report processing at http://192.168.1.200:8090/api/ce/task?id=11d2b00a-ca5e-4085-9bb0-ab95217d16f0 09:42:04.633 INFO Analysis total time: 11.891 s 09:42:04.635 INFO SonarScanner Engine completed successfully 09:42:04.679 INFO EXECUTION SUCCESS 09:42:04.680 INFO Total time: 16.262s
八、查看检测结果
在管理后台“项目”中查看检测结果。