摘要
本文是一篇面向 Windows 开发者的 SonarQube 本地代码质量扫描环境搭建教程。文章从零开始,依次讲解 Docker Desktop 与 WSL2 的安装、国内镜像加速配置、WSL2 内存限制设置、SonarQube 容器启动、JDK 17 环境确认、项目编译、访问令牌生成,以及最终的扫描配置与执行。全文步骤清晰、命令完整,适合需要在本机快速搭建 SonarQube 扫描环境的 Java 开发者参考。
提示:Docker Desktop 不强制要求登录,可以直接跳过登录,毕竟本次只需要扫描本地代码。## 1. 环境准备:安装 Docker Desktop 与 WSL2
首先下载 Docker Desktop 客户端,它能够保证 Docker 在 Windows 环境下正常使用。
在 PowerShell 中执行以下命令下载安装包:
Invoke-WebRequest-Uri"https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe"-OutFile"$env:USERPROFILE\Downloads\DockerDesktopInstaller.exe"接着安装 WSL2,在 PowerShell 中执行:
wsl--install然后下载 SonarScanner 扫描器:
- SonarScanner 6.2.1.4640 压缩包下载链接,下载后解压到 D:/sonar-scanner 文件夹内
- Docker Desktop 直链下载地址,对应版本为最新版
下载之后记得配置对应的环境变量:
- 按
Win + R输入sysdm.cpl,打开环境变量配置; - 在
Path中新增D:\sonar-scanner\sonar-scanner-6.2.1.4610-windows-x64\bin(此处仅为示例,实际位置以自己的安装位置为准)。
2. 配置 Docker 国内镜像加速
以上全部下载完成后,打开 Docker Desktop,点击Settings,找到Docker Engine,将里面的 JSON 直接修改为以下内容:
{"builder":{"features":{"buildkit":true},"gc":{"defaultKeepStorage":"20GB","enabled":true}},"experimental":false,"registry-mirrors":["https://docker.1panel.live","https://docker.m.daocloud.io","https://hub.rat.dev"]}这里主要配置了三个国内镜像加速网站,否则 Docker 容易连接不上服务器。配置完成后点击Apply & Restart重启 Docker。
3. 配置 WSL2 内存限制
先打开文件管理器,输入以下路径:
%UserProfile%在用户文件夹中寻找.wslconfig文件。如果没有这个文件,就新建一个,使用记事本打开并输入:
[wsl2] memory=6GB swap=2GB这段代码必须保证一个字都不能错,包括空格。
接着检查 WSL2 状态,依旧在 PowerShell 中执行:
wsl-l-v返回的 WSL 有两个版本,就说明安装成功了。
以上任何一步出现错误,均可以重启电脑之后解决。
4. 启动 SonarQube 容器
完成上述步骤之后,在 PowerShell 中运行:
dockerrun-d--namesonarqube-p9000:9000 sonarqube:lts-community该命令会拉取远程镜像,镜像大小约为 1GB,需要一点时间,请耐心等待,不要关闭 PowerShell。当拉取完毕时,会返回一个字符串,内容是容器 ID,此时就差不多成功了。
5. 确认 JDK 17 环境
接下来需要保证本机上有 JDK 17,因为 SonarQube 扫描是使用 JDK 17 进行的。项目用几无所谓,不需要设置到项目当中。
用以下代码确定 JDK 17 的位置,后面会用到:
Get-ChildItem"C:\Program Files\Java","C:\Program Files\Eclipse Adoptium","D:\Java"-ErrorAction SilentlyContinue|Select-ObjectFullName例如本机上的位置是C:\Program Files\Eclipse Adoptium\jdk-17.0.17.10-hotspot。
6. 编译项目
接着编译要扫描的项目,因为扫描时需要用到 class 产物:
cdd:\B-WorkSpace\product-management mvn cleaninstall-DskipTests7. 生成访问令牌
上述步骤都完成并确认之后,打开http://localhost:9000。
首次登录账号密码是admin/admin,系统会要求设置新密码。登录后,点击右上角头像 →My Account→Security,找到Generate Token / 生成令牌,填一个名字(如local),点击生成。
例如生成的令牌为:sqa_02b7b3497f1416fa5323022bd0ea3fab5b5fbxxx。
8. 编写扫描配置文件
在项目的根目录新建sonar-project.properties文件,写入以下内容:
sonar.projectKey=product-management sonar.projectName=product-management sonar.projectVersion=1.0 sonar.sources=src/main/java sonar.java.binaries=target/classes sonar.sourceEncoding=UTF-8 sonar.host.url=http://localhost:9000 sonar.login=sqa_02b7b3497f1416fa5323022bd0ea3fab5b5fbxxx9. 执行扫描
最后直接在 PowerShell 中执行:
cd d:\B-WorkSpace\product-management$env:JAVA_HOME ="C:\Program Files\Eclipse Adoptium\jdk-17.0.17.10-hotspot"$env:Path ="$env:JAVA_HOME\bin;$env:Path"d:\sonar-scanner\sonar-scanner-6.2.1.4610-windows-x64\bin\sonar-scanner.bat稍等几分钟,扫描完成后即可在 SonarQube 控制台查看代码质量报告。至此,本地 SonarQube 代码质量扫描环境搭建完成。