You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker版Sonar Scanner CLI未检测到源文件的问题求助

问题描述

本地安装的sonar-scanner执行分析正常:

sonar-scanner -Dsonar.host.url=<SONARQUBE_URL> -Dsonar.login=<TOKEN> -Dsonar.projectKey=<SOME_KEY> -Dsonar.java.binaries=target/classes

扫描器能检测到30个待分析源文件。但使用Docker版sonar-scanner-cli执行时:

(winpty) docker run --rm -e SONAR_HOST_URL=<SONARQUBE_URL> -e SONAR_TOKEN=<TOKEN> -e SONAR_SCANNER_OPTS="-Dsonar.projectKey=<SOME_KEY>  -Dsonar.java.binaries=target/classes" -v `pwd`:/usr/src sonarsource/sonar-scanner-cli:4.8.0

分析运行顺利,但未检测到任何源文件。已尝试添加-Dsonar.sources=.到SONAR_SCANNER_OPTS,以及替换pwd为/c/Projects/my_project,均无效。

排查思路
  • 验证挂载路径的正确性
    Windows环境下Git Bash的pwd输出格式可能和Docker期望的路径不兼容。先执行echo $(pwd -W)获取Windows短路径(如C:/Projects/my_project),转换为Docker识别的格式(/c/Projects/my_project)后,执行以下命令确认挂载是否成功:

    winpty docker run --rm -v /c/Projects/my_project:/usr/src sonarsource/sonar-scanner-cli:4.8.0 ls -la /usr/src
    

    查看输出是否能看到项目源文件和target/classes目录,确认文件被正确挂载到容器内。

  • 调整参数传递方式
    Windows环境下环境变量的引号可能被解析错误,尝试直接在容器启动命令后追加sonar-scanner参数,替代SONAR_SCANNER_OPTS环境变量:

    winpty docker run --rm -e SONAR_HOST_URL=<SONARQUBE_URL> -e SONAR_TOKEN=<TOKEN> -v /c/Projects/my_project:/usr/src sonarsource/sonar-scanner-cli:4.8.0 -Dsonar.projectKey=<SOME_KEY> -Dsonar.java.binaries=target/classes -Dsonar.sources=.
    
  • 检查容器内文件权限
    挂载文件可能存在权限问题导致扫描器无法读取,先查看容器内文件权限:

    winpty docker run --rm -v /c/Projects/my_project:/usr/src sonarsource/sonar-scanner-cli:4.8.0 ls -ln /usr/src
    

    如果文件所有者不是容器运行用户(通常为UID 1000),添加--user 1000:1000参数确保读取权限:

    winpty docker run --rm --user 1000:1000 -e SONAR_HOST_URL=<SONARQUBE_URL> -e SONAR_TOKEN=<TOKEN> -v /c/Projects/my_project:/usr/src sonarsource/sonar-scanner-cli:4.8.0 -Dsonar.projectKey=<SOME_KEY> -Dsonar.java.binaries=target/classes -Dsonar.sources=.
    
  • 明确sonar.sources的具体路径
    若项目源文件不在根目录(如src/main/java),需指定具体路径:

    winpty docker run --rm -e SONAR_HOST_URL=<SONARQUBE_URL> -e SONAR_TOKEN=<TOKEN> -v /c/Projects/my_project:/usr/src sonarsource/sonar-scanner-cli:4.8.0 -Dsonar.projectKey=<SOME_KEY> -Dsonar.java.binaries=target/classes -Dsonar.sources=src/main/java
    
  • 升级镜像版本
    4.8.0版本较旧,可能存在Windows环境兼容性问题,尝试使用最新版镜像重新执行:

    winpty docker run --rm -e SONAR_HOST_URL=<SONARQUBE_URL> -e SONAR_TOKEN=<TOKEN> -v /c/Projects/my_project:/usr/src sonarsource/sonar-scanner-cli:latest -Dsonar.projectKey=<SOME_KEY> -Dsonar.java.binaries=target/classes -Dsonar.sources=.
    

内容的提问来源于stack exchange,提问作者Ivan dal Bosco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:54:59