Покрытие Phpunit: в чем разница между параметрами addUncoveredFilesFromWhitelist и "processUncoveredFilesFromWhitelist"?

Я пытаюсь настроить покрытие кода для phpunit для определенного каталога. Может кто-нибудь сказать мне, в чем разница между:

<filter>
    <whitelist>
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>

и

<filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>

и

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

В настоящее время будут работать первые 2 варианта (с разными номерами покрытия), но третий будет с ошибками, похожими на Как добавить непокрытые файлы в отчет о заполнении кода PHPUnit приложения Yii.

Просто начинайте с phpunit и хотите понять различия между этими параметрами белого списка. Я читал официальные документы об этом, но я не уверен, что понимаю.

Ответ 1

Быстрый просмотр в исходном коде php-code-coverage пакета на GitHub показывает правду:

  • if addUncoveredFilesFromWhitelist FALSE, тогда покрытие кода содержит информацию о файлах, которые были загружены и выполнены (включены только строки, содержащие код);
    значение processUncoveredFilesFromWhitelist в этом случае игнорируется;
  • if addUncoveredFilesFromWhitelist TRUE, тогда файлы из белого списка, которые не были загружены и выполнены, также будут включены в покрытие кода:
    • if processUncoveredFilesFromWhitelist FALSE, тогда файлы не обрабатываются каким-либо образом; все их строки появятся в охвате кода как не исполняемые, даже пустые строки и строки, содержащие только комментарии; это быстрый и грязный способ добиться этого;
    • if processUncoveredFilesFromWhitelist TRUE, тогда файлы включаются и используются функции покрытия кода XDebug (то же самое, что и для файлов, которые фактически выполнялись), чтобы поставить в отчет только строки, содержащие код; это медленный рабочий процесс.

Значение по умолчанию для addUncoveredFilesFromWhitelist равно TRUE, а для processUncoveredFilesFromWhitelist - FALSE. Это означает, что файлы из белого списка, которые не были охвачены (поскольку они не запускались), включаются в отчет, используя быстрый способ и отчет о покрытии, а точную (0%) вычисляют, используя общее количество строк больше реального.

Однако, поскольку 0 из чего-либо еще 0%, он считает, что это лучший способ включить непокрытые файлы в отчет.

Ответ 2

Так что я думаю, что ошибался. Вот о чем говорит документация:

По желанию, все белые списки могут быть добавлены в отчет о покрытии кода, установив addUncoveredFilesFromWhitelist = "true" в вашу конфигурацию PHPUnit (см. раздел "Включение и исключение файлов для покрытия кода" ). Это позволяет включить файлы, которые еще не протестированы. Если вы хотите получить информацию о том, какие строки такого непокрытого файла исполняются, например, вам также необходимо установить processUncoveredFilesFromWhitelist = "true" в вашей конфигурации PHPUnit (см. Раздел "Включение и исключение файлов для покрытия кода" ).

Итак, ответ здесь состоит в том, что adding непокрытые файлы будут включать их в отчет о покрытии, но на самом деле processing они соберут дополнительную информацию.

Оригинал

Смотрите этот твиттер от Себастьяна. Немного трудно сказать из twitter terseness, но похоже, что addUncoveredFilesFromWhitelist может быть просто старой формой той же функциональности, что processUncoveredFilesFromWhitelist обеспечивает устаревший код.

Содержание твиттер-беседы:

@user1: В @phpunit, в чем разница между addUncoveredFilesFromWhitelist = "true" и processUncoveredFilesFromWhitelist = "true"?

@s_bergmann: вы хотите использовать processUncoveredFilesFromWhitelist. Если он не работает (устаревший код), используйте addUncoveredFilesFromWhitelist