如何从Bullseye代码覆盖率.cov文件中排除指定文件夹
Bullseye Coverage 移除.cov文件指定目录覆盖率数据操作方法
covselect匹配路径的依据是编译阶段写入.cov文件的源文件路径记录,和你当前执行统计脚本的工作目录无关,你之前传入的路径和cov文件内实际存储的路径不匹配,所以所有命令都不生效。
操作步骤
- 第一步:先查询cov文件内实际存储的源文件路径,不要自行臆测路径写法
执行以下命令列出所有已收录的源文件,找到你要排除的qwerty目录对应的真实路径片段:covlist --file "%COVFILE%" -s该命令输出的路径是
covselect做规则匹配的唯一基准,和你当前脚本所在目录、源码实际存放的当前路径没有关联。 - 第二步:按匹配规则执行移除命令
covselect默认采用路径前缀匹配规则,不需要对斜杠加转义符,也不需要拼当前目录的相对层级,直接匹配从covlist输出里拿到的路径片段即可:- 通用匹配(不关心前面的路径前缀,只要路径包含
src/bin/qwerty/就排除):covselect --file "%COVFILE%" --remove '*/src/bin/qwerty/*' - 精准匹配(如果从covlist查到目标目录的完整存储路径是类似
/workspace/project/src/bin/qwerty/的完整路径,可直接写全路径前缀):covselect --file "%COVFILE%" --remove '/workspace/project/src/bin/qwerty/*'
- 通用匹配(不关心前面的路径前缀,只要路径包含
之前命令失效的原因
- 命令里额外添加的
\/转义是无效写法,covselect不需要对路径斜杠做转义 - 传入的
../../src/bin/qwerty/是基于当前脚本工作目录的相对路径,cov文件内不会存储这类运行时相对路径,完全无法命中 - 传入的
/src/bin/qwerty/是系统根目录起始的绝对路径,和cov文件内存储的编译时路径前缀不匹配,不会命中任何条目
验证结果
执行完移除命令后,重新运行covlist --file "%COVFILE%" -s,确认目标目录下的文件已从列表中消失,后续生成的覆盖率报告就不会包含这部分数据。
内容的提问来源于stack exchange,提问作者roffensive
相关产品推荐
相关产品推荐

