我有一个侦听测试套件的 Codecov,假设我们只有一个集成测试套件,配置将如下所示: codecov.yaml
coverage:
status:
project:
default:
target: 50%
threshold: 0%
base: auto
if_no_uploads: error
if_not_found: success
integration:
target: 75%
threshold: 0%
base: auto
if_no_uploads: error
if_not_found: success
flags:
- integration
假设我在
Resouser.php
下的不同目录中有很多名为 /src/App/Ui/
的文件,这些文件仅包含开放的 API 文档配置,但不包含实际的 PHP 代码,因此我想将它们排除在覆盖范围之外。
如果我理解正确的话,它需要在 phpunit.xml 的
<coverage>
部分完成,对吧?所以我这样做了:
<coverage cacheDirectory="var/phpunit/coverage/.phpunit.cache">
<exclude>
<directory suffix="Resource.php">./src/App/Ui/</directory>
</exclude>
<report>
<clover outputFile="var/phpunit/coverage/clover.xml"/>
<crap4j outputFile="var/phpunit/coverage/crap4j.xml"/>
<html outputDirectory="var/phpunit/coverage"/>
<xml outputDirectory="var/phpunit/coverage"/>
<text outputFile="php://stdout" showUncoveredFiles="true"/>
</report>
a 告诉我想排除目录
./src/App/Ui/
中带有后缀 EndpointResource.php
的所有文件,没有任何变化,覆盖百分比相同,并且覆盖的文件数量与总文件数量仍然相同
Code Coverage Report:
2024-01-16 14:54:19
Summary:
Classes: 56.07% (134/239)
就像我添加
exclude
标签之前一样
如果您在要忽略的类/方法之上添加以下注释,它应该可以正常工作。可能比一次排除整个目录要多一些工作,但它会起作用。
/**
* @codeCoverageIgnore
*/