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

Windows环境下Docker运行SonarScanner无法扫描源代码问题咨询

问题根因与解决方案

核心问题定位

你遇到的报错本质是Windows环境下终端路径变量格式不兼容Docker挂载规则,导致本地项目目录没有被正确挂载到SonarScanner容器的/usr/src目录下,容器内扫描路径为空,所以要么提示找不到代码要么提示指定目录不存在。

第一步:先验证挂载是否正常

执行以下命令测试当前目录是否能被正常挂载到容器内:

# 通用测试命令,不同终端替换路径变量即可
docker run --rm -v <你的当前目录变量>:/usr/src alpine ls /usr/src

如果命令输出为空,说明挂载确实失败,按下方对应终端的方案修改参数即可。

分终端的解决方案

1. PowerShell 终端

PowerShell的$PWD是路径对象不是纯字符串,需要转换为绝对路径格式:
把原来的挂载参数 -v $PWD:/usr/src 替换为:

-v "${PWD.Path}:/usr/src"

完整启动命令示例:

docker run \
    --rm \
    --network=host \
    -e SONAR_HOST_URL="http://127.0.0.1:9000/" \
    -e SONAR_LOGIN="你的token" \
    -v "${PWD.Path}:/usr/src" sonarsource/sonar-scanner-cli \
    -Dsonar.projectKey=some-project-name \
    -Dsonar.sources=你的子目录名

2. CMD 命令提示符

CMD没有$PWD变量,用系统内置的%cd%表示当前目录:
把挂载参数替换为:

-v %cd%:/usr/src

3. WSL 终端

如果是在WSL环境下调用Docker Desktop,需要先开启Docker Desktop设置中的「WSL集成」开关,或者将WSL路径转换为Windows格式:

-v $(wslpath -w $PWD):/usr/src

其他验证与排查项

  • 挂载成功后如果还是有问题,可以添加-Dsonar.verbose=true参数执行扫描,查看日志中识别到的文件列表,确认路径是否匹配。
  • 不要在sonar.sources参数中写宿主机的绝对路径,该参数值是相对于容器内/usr/src的相对路径。

内容的提问来源于stack exchange,提问作者hellneck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:54:04