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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:57:10