Анализ покрытия модульного теста XCode 5.1 не выполняется для файлов с использованием блоков

Сегодня мне было поручено добавить анализ покрытия модульных тестов в нашу базу кода. Сегодня также день iOS 7.1 выпущен вместе с XCode 5.1. Из заметок о выпуске:

Инструмент gcov для тестирования покрытия кода был переопределён. В новой версии используется инструмент llvm-cov из проекта LLVM. Это функционально эквивалентно старой версии для всех существенных особенностей. Расположение gcov в Xcode также изменилось, используйте xcrun для его вызова. Если вы обнаружили проблемы, пожалуйста, отправляйте сообщения об ошибках. Для этого выпуска вы все еще можете использовать старую версию gcov от GCC, которая доступна как gcov-4.2. 11919694 обновлен

Я понял это только после нескольких следующихучебный блог сообщенийправильная настройка среды - генерация файлов .gcda / .gcno в папках сборки симулятора после тестирования - и наличие инструментов для генерации отчетовВот попробуйте разобрать их в отчете. (это скрипт ./getcov, который собирает переменные среды для передачи в сценарии lcov-1.10 для генерации отчета)

Первым препятствием было то, что новый в комплектеgcov Программа не поддерживает-v аргумент, чтобы получить версию, которая является первым шагомlcovинициализация. Похоже, уже не начальный, но, читая заметки о выпуске выше, я изменилlcov скрипт для использования старогоgcov-4.2 версия и получил, что решено.

Тем не мение,lcov Ошибка очень рано при обработке моих файлов данных покрытия. Это сгенерировало отчет с моими первыми 10 или около того файлами в алфавитном порядке в моем проекте. Не особенно полезно. Вывод ошибки был минимальным и бесполезным:

geninfo: ОШИБКА: сбой GCOV для (build_artifacts) / (class_that_errored) .gcda!

Я модифицировалlcov скрипт для печати ошибки, которую он получал (который только дал11 к сожалению, я не смог найти никаких ссылок в коде gcov (-io) .c) и продолжить работу вместо выхода, поэтому у меня осталось гораздо больше файлов в отчете, но все же, вероятно, 85% моих исходных файлов имели ошибка как указано выше.

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

Затем я понял, что могу открыть отдельные файлы .gcda вCoverStoryв том числе те, которые ошиблись вlcov скрипт. В окне сообщения под отчетом о покрытии все файлы с ошибками имели предупреждающие сообщения:

(class_that_errored) .gcno: нет строк для '__copy_helper_block_'

(class_that_errored) .gcno: нет строк для '__destroy_helper_block_'

Моя лучшая гипотеза на данный момент заключается в том, что новый XCode 5.1 генерирует файлы .gcda, которые старыеgcov-4.2 Программа не оборудована для работы с объявлениями блоков.

Но я исчерпал все, что я могу попробовать, поэтому я здесь, чтобы спросить, есть ли у кого-нибудь знания, которые я пропустил, или есть какие-либо идеи для продолжения отладки. Или, если кто-то успешно измеряет тестовое покрытие с сегодняшнего обновления XCode 5.1 с новымgcovЯ хотел бы услышать о любых изменениях, которые вы должны были сделать.

Ответы на вопрос(4)

Ваш ответ на вопрос