Я пытаюсь настроить покрытие кода для 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
а для processUncoveredFilesFromWhitelist
– FALSE
. Это означает, что файлы из белого списка, которые не были охвачены (поскольку они не запускались), включаются в отчет, используя быстрый способ и отчет о покрытии, а точную ( 0%
), вычисляют, используя общее количество строк немного больше чем реальный.
Однако, поскольку 0
из чего-либо все еще 0%
, он считает, что это лучший способ включить обнаруженные файлы в отчет.
Поэтому я думаю, что ошибался. Вот что должна сказать об этом документация:
Необязательно, все белые списки можно добавить в отчет о покрытии кода, установив addUncoveredFilesFromWhitelist = "true" в вашу конфигурацию PHPUnit (см. Раздел «Включение и исключение файлов для покрытия кода»). Это позволяет включить файлы, которые еще не протестированы. Если вы хотите получить информацию о том, какие строки такого непокрытого файла исполняются, например, вам также необходимо установить processUncoveredFilesFromWhitelist = «true» в вашей конфигурации PHPUnit (см. Раздел «Включение и исключение файлов для покрытия кода»).
Поэтому ответ здесь заключается в том, что adding
непокрытых файлов будет включать их в отчет о покрытии, но на самом деле их processing
будет собирать дополнительную информацию.
оригинал
Смотрите этот твиттерский разговор от Себастьяна. Немного сложно рассказать о трезвости твиттера, но похоже, что addUncoveredFilesFromWhitelist
может быть просто старой формой той же функциональности, что processUncoveredFilesFromWhitelist
предоставляет устаревший код.
Содержание твиттер-беседы:
@ user1: В @phpunit, в чем разница между addUncoveredFilesFromWhitelist = "true" и processUncoveredFilesFromWhitelist = "true"?
@s_bergmann: вы хотите использовать processUncoveredFilesFromWhitelist. Если он не работает (устаревший код), используйте addUncoveredFilesFromWhitelist