
asuuto/sonar-scannerSonar Scanner是SonarQube生态系统的核心客户端工具,用于对源代码进行静态分析,并将分析结果上传至SonarQube服务器。通过集成多种代码规则引擎,它能够检测代码中的漏洞、bug、代码异味及重复代码,帮助开发团队持续提升软件质量。该Docker镜像封装了Sonar Scanner运行环境,简化了工具部署与跨平台使用流程。
bashdocker run --rm \ -v $(pwd):/usr/src \ # 挂载本地代码目录至容器内分析路径 -e SONAR_HOST_URL="[***]" \ # SonarQube服务器地址 -e SONAR_TOKEN="your-auth-token" \ # SonarQube认证令牌(从服务器获取) -e SONAR_PROJECT_KEY="my-project-key" \ # 项目唯一标识(在SonarQube中预配置) sonarsource/sonar-scanner-cli
| 环境变量 | 说明 | 必需性 |
|---|---|---|
| SONAR_HOST_URL | SonarQube服务器URL(如[***]) | 是 |
| SONAR_TOKEN | SonarQube用户令牌(具有项目分析权限,从服务器"我的账号>安全"中生成) | 是 |
| SONAR_PROJECT_KEY | 项目在SonarQube中的唯一标识 | 是 |
| SONAR_PROJECT_NAME | 项目名称(默认与SONAR_PROJECT_KEY一致) | 否 |
| SONAR_PROJECT_VERSION | 项目版本号(如1.0.0) | 否 |
| SONAR_SCANNER_OPTS | JVM参数(如-Xmx512m调整内存) | 否 |
在代码根目录创建sonar-project.properties文件,覆盖默认配置:
properties# 项目基本信息 sonar.projectKey=my-project-key sonar.projectName=My Project sonar.projectVersion=1.0.0 # 源代码目录(相对于容器内挂载路径) sonar.sources=src/main/java sonar.tests=src/test/java # 语言与编码 sonar.language=java sonar.sourceEncoding=UTF-8 # 质量门槛配置 sonar.qualitygate.status=passed # 仅当质量门通过时返回成功
运行时无需指定环境变量,容器会自动读取配置文件:
bashdocker run --rm -v $(pwd):/usr/src sonarsource/sonar-scanner-cli
yamlversion: '3' services: sonar-scanner: image: sonarsource/sonar-scanner-cli volumes: - ./code:/usr/src # 挂载代码目录 environment: - SONAR_HOST_URL=[***] - SONAR_TOKEN=your-token - SONAR_PROJECT_KEY=my-project depends_on: - sonarqube # 确保SonarQube服务器已启动 sonarqube: # 可选:本地SonarQube服务(用于测试) image: sonarqube:latest ports: - "9000:9000" environment: - SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
在.gitlab-ci.yml中添加分析任务:
yamlsonar-scan: image: sonarsource/sonar-scanner-cli stage: test variables: SONAR_HOST_URL: "[***]" SONAR_TOKEN: "$SONARQUBE_TOKEN" # 从GitLab CI/CD变量中获取令牌 SONAR_PROJECT_KEY: "gitlab-$CI_PROJECT_ID" script: - sonar-scanner -Dsonar.projectKey=$SONAR_PROJECT_KEY only: - main # 仅在main分支触发分析
sonar-scanner用户(UID 1000),需确保宿主机代码目录对该用户可读。SONAR_SCANNER_OPTS调整JVM内存(如-Xmx2g),避免OOM错误。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务