如何用Slather获取Xcode项目特定Group的代码覆盖率?
用Slather仅统计Xcode特定Group的代码覆盖率(排除Swift PM依赖)
只靠ignore配置往往压不住SPM依赖的混入,核心思路是先明确指定要统计的路径,再排除无关内容,以下是可行的配置和步骤:
- 明确指定目标Group的路径
在.slather.yml里用src_paths直接锁定你要统计的特定Group,路径写从项目根目录出发的相对路径:
src_paths: - Sources/YourTargetGroup # 替换成你的Group实际路径,比如App/Modules/Login
- 精准排除Swift PM相关文件
配合ignore排除SPM的依赖源码和构建产物,也可以顺便排除测试代码(如果不需要统计的话):
ignore: - .build/**/* # 排除SPM构建生成的文件 - Packages/**/* # 排除SPM拉取的依赖源码 - Tests/**/* # 可选:排除测试代码文件
- 额外锁定目标Target(可选)
如果你的Group属于某个特定Target,也可以加上targets配置进一步缩小统计范围:
targets: - YourAppTargetName # 替换成你的Target名称
完整的.slather.yml示例:
coverage_service: html xcodeproj: YourProject.xcodeproj # 替换成你的项目文件 scheme: YourAppScheme # 替换成你的Scheme名称 src_paths: - Sources/YourTargetGroup targets: - YourAppTargetName ignore: - .build/**/* - Packages/**/* - Tests/**/*
- 验证配置并生成报告
执行命令前可以先查看Slather识别的源码列表,确认没有混入SPM文件:
slather list-sources --config .slather.yml
确认无误后再生成覆盖率报告:
slather coverage --config .slather.yml
关键提醒
src_paths的路径一定要准确,你可以在项目根目录用ls命令核对路径是否正确- 如果你的SPM依赖是通过Xcode的
Package Dependencies添加的,部分版本的Xcode会把依赖放在DerivedData里,但Slather默认不会扫描这个目录,重点排除Packages和.build即可
内容的提问来源于stack exchange,提问作者CodeSun
相关产品推荐
相关产品推荐

