Покрытие кода Xcode 4.2 - PullRequest
       51

Покрытие кода Xcode 4.2

7 голосов
/ 15 октября 2011

Я начал использовать Xcode 4.2, и у меня возникли проблемы с генерацией покрытия кода.

Xcode 4.2 не включает компилятор GCC 4.2, но он был заменен компилятором LLVM GCC 4.2.Первый был необходим для генерации покрытия кода в предыдущей версии Xcode.

Я следовал «учебнику» на CoverStory веб-сайте , но это приводит к следующему:

а) когда я делаю все шаги, нет файлов покрытия.
б) когда я связываю libprofile_rt.dylib с моим проектом, тест, который должен провалиться, больше не терпит неудачу.

Кто-нибудь сталкивался с этимвопрос?И как ты это решил?

Спасибо

Ответы [ 3 ]

4 голосов
/ 28 октября 2011

В этом блоге есть хорошее руководство о том, как добиться результатов покрытия, совместимых с gcc, с помощью LLVM.

Функции покрытия доступны в текущем внешнем интерфейсе LLVM, но, как кажется, не выставлены
в текущей версии, которая поставляется с XCode.

Я согласен с автором, что это может бытьрешение для компиляции вашей собственной версии для целей покрытия и придерживайтесь поставленной версии для окончательной генерации двоичного кода.

Также стоит отметить, что его руководство утверждает:

Since Clang outputs these files in the same format as GCC,
they are compatible with tools such as CoverStory.

Возможно, это какая-тоиспользовать для вас.

3 голосов
/ 30 октября 2011

Вот способ включить компиляцию с gcc 4.2 в xcode 4.2 .Это в основном выполняется через командную строку, поэтому, когда вы видите строки, начинающиеся с: [ 15:30 jon@MacBookPro / ]$, вам нужно открыть Terminal.app и запустить команду, которая начинается после $.

В этом процессе нет файлов или каталогов , удаленных или , удаленных , поэтому можно легко отменить их, если в будущем потребуется скомпилировать с LLVM.

  1. Скачать - но сделать не установить пока - xcode_4.1_for_lion.dmg или xcode_4.1_for_snow_leopard.dmg

  2. Теперь выполните следующие шаги для установки Xcode 4.1 в /Developer-4.1:

    1. Резервное копирование рабочего каталога /Developer (гдеXcode 4.2 установлен)

  3. Запустите установщик Xcode 4.1, используя место установки по умолчанию (/Developer)

  4. Переместите новую установку Xcode 4.1 в /Developer-4.1:

    [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.1
    
  5. Переместите каталог разработчика Xcode 4.2 обратно в /Developer:

    [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer-4.2 /Developer
    

Отредактируйте файл Xcode 4.2 GCC 4.2.xcspec, чтобы получить gcc 4.2 для отображения в списке параметров компилятора [1] :

[ 15:30 jon@MacBookPro / ]$ sudo vi "/Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2 (Plausible Blocks).xcplugin/Contents/Resources/GCC 4.2.xcspec"
  • Измените строки 41 и 42 следующим образом:

    ShowInCompilerSelectionPopup = NO;
    IsNoLongerSupported = YES;
    
  • На это:

    ShowInCompilerSelectionPopup = YES; 
    IsNoLongerSupported = NO;
    

Резервное копирование Xcode 4.2 iOS / Simulator Framework usr каталогов:

[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr.backup
[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneSimulator.platform/Developer/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr.backup

Копирование каталогов Xcode 4.1 iOS / Simulator Framework usr в Xcode4.2:

[ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr
[ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr

Скопируйте каталоги библиотек iOS SDK gcc и info из Xcode 4.1 в Xcode 4.2 [2] :

[ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/gcc /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/gcc
[ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/info /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/info

Компиляция с использованием gcc-4.2!

Screenshot of CGG 4.2 in xcode 4.2

Это сообщение в блоге, которое я написал, с небольшой информацией об этом процессе.Не стесняйтесь оставлять комментарии в блоге, если у вас возникли какие-либо проблемы или у вас возникли вопросы.


[1] При открытии из командной строки(используя что-то вроде vi, emacs, nano и т. д.) убедитесь, что путь заключен в кавычки "/ long path / с пробелами / в нем / file.xcspec" или escapeпробелы / some / long \ path / с \ пробелами / в \ it / file.xcspec

[2] Это необходимо, поскольку SDK для iPhoneOS.platform имеет свои отдельные каталоги /usr/lib, а SDK для iPhoneSimulator.platform не

2 голосов
/ 24 октября 2011

Компилятором по умолчанию Xcode 4.2 является LLVM 3.0.Apple переходит от LLVM к GCC 4.2, который по-прежнему доступен в качестве опции.GCC 4.2, однако, ушел навсегда.

Полагаю, у вас нет другого выбора, кроме как найти другое решение для покрытия кода, которое работает с LLVM 3.0 (предпочтительно) или LLVM GCC 4.2, или подождать, пока кто-нибудь не предоставит такой инструмент.В конце концов, Xcode 4.2 является относительно новым и покрытие кода относительно важным, так что я уверен, что в конечном итоге появится рабочее решение.

...