Я использую Xcode 3.2 на 10.6 с поставляемой версией gcov и компилятором GCC по умолчанию (обе версии 4.2.1). Я создал зависимый набор тестовых модулей Cocoa, который вводится в мое приложение, и последовали за документацией Apple по адресу setting up a gcov-instrumented build configuration - на основе конфигурации Debug, в которой нет оптимизаций компилятора.Почему gcov не сообщает о каких-либо линиях, охватываемых моими модульными тестами?
Когда я создаю тестовый комплект с этой конфигурацией «Gcov-instrumented», приложение запускается и тесты вводятся и запускаются. Также файлы статистики покрытия создаются по адресу:
build/<AppTarget>.build/Gcov-instrumented/<AppTarget>.build/Objects-normal/x86_64/<object>.gcda
build/<AppTarget>.build/Gcov-instrumented/<AppTarget>.build/Objects-normal/x86_64/<object>.gcno
Пока все хорошо. Я знаю, что тесты действительно выполняются, потому что, если я вставляю отказы, тогда тестовый набор выходит из строя, как ожидалось. К сожалению, gcov сообщает, что никакие строки объектов не были покрыты тестами! Каждая строка отображается как 0. Я искал здесь и в архивах списков рассылки Apple, и не могу найти никого с аналогичной проблемой. Я ожидаю, что у меня что-то не хватает, но что это?
Спасибо за это! Теперь я получаю покрытие, которое я ожидал бы :-) – 2009-10-13 08:25:07
+1 Я получил его, работая с тем же самым подходом на Snow Leopard. Требование отказаться от GCC 4.0 несколько сбивает с толку, поскольку код, который должен быть скомпилирован с GCC 4.2 или LLVM (например, если он использует блоки), не будет работать в старой версии компилятора, и покрытие кода может исчезнуть. Это звучит как радар, ожидающий подачи ... –
Даниэль, я сталкиваюсь с аналогичными проблемами при использовании lcov для создания отчетов о охвате HTML. Это позволяет мне передать '-gcov-tool/usr/bin/gcov-4.0', чтобы переопределить значение по умолчанию 4.2, на которое указывает'/usr/bin/gcov'. Я заглянул в источник CoverStory и использовал эту символическую ссылку. http://code.google.com/p/coverstory/source/browse/trunk/CoverStoryDocument.m # 131 Конечно, было бы неплохо, если бы они ** ** добавили для этого пользователя по умолчанию, даже если это не в диалоговом окне настроек ... –