Покрытие кода с помощью Xcode 4.2 - Отсутствующие файлы - PullRequest
14 голосов
/ 04 января 2012

Я следовал за сообщением Клауса , чтобы настроить покрытие кода на Xcode 4.2 с LLVM 3.0. Я могу видеть файлы тестового покрытия, но они предназначены только для моих классов модульных тестов, а не для моих реальных классов проекта. Я попытался установить Создать тестовые файлы покрытия и Ход программы инструментов до Да на моей главной цели, но это не помогло, так как это не помогло с следующая ошибка:

fopen $ UNIX2003, вызываемый из функции llvm_gcda_start_file

Чтобы уточнить, я не думаю, что это даже правильный подход - я просто попробовал его, чтобы увидеть, будет ли он генерировать покрытие кода в моих классах проекта.

На данный момент, я был бы рад попробовать все, что обеспечивает покрытие кода, работающее в моем приложении. Есть предложения?

Ответы [ 2 ]

24 голосов
/ 05 января 2012

Вы ожидаете проблемы с компоновщиком, библиотека profile_rt использует функции fopen$UNIX2003 и fwrite$UNIX2003 вместо fopen и fwrite.

Все, что вам нужно, это добавить следующий файл .cк вашему проекту:

#include <stdio.h>

FILE *fopen$UNIX2003( const char *filename, const char *mode )
{
    return fopen(filename, mode);
}

size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
{
    return fwrite(a, b, c, d);
}

Этот код просто переводит отсутствующие функции в стандартные.

Примечание к суффиксу $UNIX2003:

Iобнаружил документ Apple , в котором говорится:

Варианты соответствия UNIX ™ используют суффикс $ UNIX2003.

Важное замечание: Работа над соответствием UNIX ™ началась вMac OS 10.4, но не была завершена до 10.5.Таким образом, в версиях libSystem.dylib версии 10.4 существует множество соответствующих символов варианта (с суффиксом $ UNIX2003).Список не является полным, и соответствующее поведение вариантов символов может быть неполным, поэтому их следует избегать.

Поскольку 64-битная среда не имеет устаревшего обслуживания, она была создана для UNIX ™.с самого начала, без использования суффикса $ UNIX2003.Так, например, _fputs $ UNIX2003 в 32-разрядной версии и _fputs в 64-разрядной версии будут работать одинаково.

Поэтому я ожидаю, что libprofile_rt будет связан с 10.4 SDK.

2 голосов
/ 11 января 2012

Я использую CoverStory http://code.google.com/p/coverstory/ графический интерфейс для .gcda и .gcno файлов.

В документации объясняются настройки, необходимые для генерации этих файлов http://code.google.com/p/coverstory/wiki/UsingCoverstory.

...