Покрытие 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> 

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

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

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

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

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

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

Поэтому я думаю, что ошибался. Вот что должна сказать об этом документация:

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

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

оригинал

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

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

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

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