本地执行SonarScanner报错IllegalStateException:文件索引失败
SonarScanner在Indexing files阶段崩溃,抛出AccessDeniedException无法访问指定目录
环境信息
- 操作系统:Linux Ubuntu 20.04 LTS
- SonarScanner CLI版本:6.1.0.4477
- SonarQube版本:Data Center Edition 9.9.4 (build 87374)
- build-wrapper版本:6.41.1 (linux-x86)
问题描述
使用build-wrapper成功生成build-wrapper-dump.json文件后,运行SonarScanner CLI进行代码分析,在「INFO Indexing files...」阶段早期崩溃,抛出以下异常:
java.lang.IllegalStateException: Failed to index files
Caused by: java.nio.file.AccessDeniedException: /home/user/project/bin_LinuxUbuntu_x64_Debug/api
解决方案
1. 修复目录权限
运行SonarScanner的用户对目标目录/home/user/project/bin_LinuxUbuntu_x64_Debug/api缺少读权限,需调整权限:
- 先查看目录权限:
ls -ld /home/user/project/bin_LinuxUbuntu_x64_Debug/api - 赋予读和执行权限(递归处理子目录加
-R参数):chmod +rX /home/user/project/bin_LinuxUbuntu_x64_Debug/api
2. 确认运行用户权限
如果SonarScanner是以特定系统用户(如sonarqube)运行,需确保该用户对目标目录有访问权限,可通过切换用户验证:
su - sonarqube -c "ls /home/user/project/bin_LinuxUbuntu_x64_Debug/api"
3. 排除无需扫描的目录(可选)
若该目录为编译产物且不需要纳入代码分析,可在项目的sonar-project.properties中添加排除规则:
sonar.exclusions=**/bin_LinuxUbuntu_x64_Debug/api/**
内容的提问来源于stack exchange,提问作者Ped7g
相关产品推荐
相关产品推荐

