SonarScanner 报错完整解析与修复方案

📅 2026/7/31 14:14:24
SonarScanner 报错完整解析与修复方案
目录一、报错核心信息翻译与含义直译根因二、4 套可行修复方案按推荐优先级排序方案 1排除资源目录Maven/Gradle 最常用Mavenpom.xml sonar 配置Gradlesonar-project.properties 配置文件方案 2精准排除 Excel 文件仅屏蔽 xlsx保留其他资源扫描方案 3隔离 main/test 扫描范围避免规则重叠方案 4CI 流水线临时跳过资源扫描Jenkins/GitLab CI三、排查步骤定位重复匹配根源四、补充说明一、报错核心信息翻译与含义File xxx.xlsx cant be indexed twice. Please check that inclusion/exclusion patterns produce disjoint sets for main and test files ERROR: SonarQube scanner exited with non-zero code: 2直译文件xxx.xlsx被重复索引请检查包含 / 排除规则保证业务代码 (main) 与测试代码 (test) 的扫描文件集合互不重叠。根因Sonar 扫描时同一个 xlsx Excel 文件同时被匹配到「主源码集」和「测试源码集」文件被两次纳入扫描索引触发校验阻断扫描进程异常退出返回码 2。 下方Unable to locate report-task.txt是衍生警告扫描失败后无报告文件生成属于次生问题优先解决重复索引即可。二、4 套可行修复方案按推荐优先级排序方案 1排除资源目录Maven/Gradle 最常用业务资源文件excel 模板、静态文件无需代码质量扫描直接全局排除resources目录。Mavenpom.xml sonar 配置properties !-- 主源码排除resources下所有文件 -- sonar.exclusionssrc/main/resources/**/*/sonar.exclusions !-- 测试目录保持不变 -- sonar.test.exclusionssrc/test/**/sonar.test.exclusions /propertiesGradlesonar { properties { property sonar.exclusions, src/main/resources/**/* } }sonar-project.properties 配置文件# 排除所有资源文件 sonar.exclusionssrc/main/resources/**/*.xlsx,src/main/resources/**/* sonar.test.inclusionssrc/test/java/**方案 2精准排除 Excel 文件仅屏蔽 xlsx保留其他资源扫描不想全部排除 resources仅针对报错的 Excel 文件过滤sonar.exclusionssrc/main/resources/excel/**/*.xlsx方案 3隔离 main/test 扫描范围避免规则重叠若你的扫描规则同时匹配了 main 和 test 目录拆分包含规则# 主代码只匹配java源码不包含资源文件 sonar.inclusionssrc/main/java/**/*.java # 测试代码仅匹配test目录 sonar.test.inclusionssrc/test/java/**/*.java # 显式禁止test扫描main目录 sonar.test.exclusionssrc/main/**方案 4CI 流水线临时跳过资源扫描Jenkins/GitLab CI在流水线脚本执行 sonar-scanner 时追加参数sonar-scanner \ -Dsonar.exclusionssrc/main/resources/**/*.xlsx三、排查步骤定位重复匹配根源查看项目中是否自定义了宽泛匹配规则例如**/*同时匹配 main、test 下所有文件检查是否误将src/main/resources写入sonar.test.inclusions测试扫描范围本地执行扫描命令追加调试参数查看文件匹配日志sonar-scanner -Dsonar.verbosetrue日志会打印每个文件归属 main /test确认 xlsx 文件同时出现在两类集合中。四、补充说明返回码 2 含义SonarScanner 标准错误码代表「文件索引冲突 / 配置规则非法」衍生警告report-task.txt扫描成功后才会生成该报告文件无需单独处理解决重复索引后自动消失适用范围Java Maven/Gradle 项目通用Excel、Word、PDF 等非代码资源均建议排除扫描无质量分析价值且易触发此类冲突。