在审查员中生成代码覆盖率

时间:2018-04-21 13:24:21

标签: php laravel composer-php code-coverage scrutinizer

我创建了一个小包,我想获得一些资格。 其中一个是Scrutinizer覆盖率和代码质量。 在教程中,我创建了一个文件并将其重命名为scrutinizer.yml并将以下内容放入其中:

build:
tests:
    override:
        -
            command: 'vendor/bin/phpunit --coverage-clover=some-file'
            coverage:
                file: 'some-file'
                format: 'clover'

但在我的Scrutinizer个人资料中进行同步后,我得到了这个"覆盖率NaN%"

那我该怎么办?

1 个答案:

答案 0 :(得分:1)

我找到了。 它与PHPUnit的设置有关。我创建一个文件并将其重命名为phpunit.xml并将以下配置代码添加到它。

<phpunit backupGlobals="false"
     backupStaticAttributes="false"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnFailure="false"
     syntaxCheck="false"
>
<testsuites>
    <testsuite name="Package Test Suite">
        <directory suffix=".php">./tests/</directory>
    </testsuite>
</testsuites>
</phpunit>

运行phpunit后创建本地coverage.xml文件;它给了我以下错误:

Error:         No code coverage driver is available

我经过一番搜索后发现我必须在phpunit.xml中插入以下代码

<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">src</directory>
    </whitelist>
</filter>

所以最终的phpunit.xml文件是

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
>
    <testsuites>
        <testsuite name="Package Test Suite">
            <directory suffix=".php">./tests/</directory>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">src</directory>
        </whitelist>
    </filter>
</phpunit>