iOS项目SonarQube分析异常:Swift文件被误排除致无代码行数
排查SonarScanner自动排除Swift文件及测试目录的异常
1. 检查SonarQube服务器端默认规则
SonarQube的全局或项目级质量配置可能自带默认排除规则,导致Swift文件和测试目录被自动排除:
- 登录SonarQube仪表盘进入目标项目
- 进入项目设置 > 分析范围 > 排除,查看是否存在
**/*.swift或**/*Test*/**这类系统自动添加的规则 - 若有,直接删除并保存,重新执行扫描
2. 验证版本兼容性
SonarScanner与SonarQube服务器版本不匹配,可能触发错误的默认排除逻辑:
- 确认SonarScanner版本和服务器版本兼容(例如SonarScanner 5.0+对应SonarQube 9.9+)
- 尝试升级SonarScanner到最新稳定版,或降级至与服务器匹配的版本后重新扫描
3. 检查sonar-project.properties配置冲突
配置文件中的隐式设置可能间接导致文件被排除:
- 确认是否设置了
sonar.inclusions,若该属性仅包含非Swift文件,会间接排除所有.swift文件 - 检查是否通过环境变量或脚本传入了
sonar.swift.exclusions/sonar.test.exclusions这类意外参数 - 明确添加配置:
sonar.inclusions=**/*.swift(扫描所有Swift业务代码),同时设置sonar.test.exclusions=**/*Test*/**(仅排除测试目录,保留业务代码)
4. 排查Slather集成干扰
Slather的配置可能与SonarScanner扫描逻辑冲突:
- 确认
sonar.swift.coverage.reportPaths指向Slather生成的覆盖率报告的正确路径 - 暂时禁用Slather集成,单独执行SonarScanner扫描,验证是否还会自动排除Swift文件,以此判断是否为Slather导致的配置干扰
5. 检查扫描启动参数
执行扫描命令时可能传入了额外的排除参数:
- 查看启动SonarScanner的命令,确认是否存在
-Dsonar.exclusions=**/*.swift,**/*Test*/**这类参数 - 若有,移除多余参数,仅依赖sonar-project.properties中的配置执行扫描
6. 清理项目缓存
SonarQube项目缓存可能残留旧的排除规则:
- 进入项目的管理 > 项目设置 > 高级 > 清理缓存
- 执行缓存清理后,重新触发扫描
内容的提问来源于stack exchange,提问作者Bawenang Rukmoko Pardian Putra
相关产品推荐
相关产品推荐

