2016-08-17 7 views
0

Мы используем Xcode 7 и 8 (бета). Apple отказалась от покрытия кода GCOV в XCode 7 и полностью удалила его в XCode 8. Поэтому мы пытаемся перейти на экспорт файлов profdata.Как мы можем генерировать (profdata) код для ручных тестов iOS?

Мы должны иметь возможность создавать файлы покрытия кода (profdata/profraw но не GCNO или gcda) при выполнении ручных операций, и вот что я пробовал:

GTM_CONFIGURATION_OTHER_CFLAGS = -fprofile-instr-generate -fcoverage-mapping 

Как

//If enabled, passes flag -fprofile-instr-generate and -fprofile-instr-generate 
CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING = YES 

Я знаю, как получить покрытие кода для XCTests, но в этом случае мне также нужно сгенерировать его во время ручного запуска.

ответ

1

Я верю, но не пробовал, что это может быть выполнено путем вызова __llvm_profile_write_file (void) из вашего кода. Вам нужно будет переслать объявление и выяснить способ запуска вызова, когда вам это нужно. Примечательно, что полученный файл будет продолжать собирать покрытие из всего исполнения и что вы можете захотеть сделать копию сгенерированного файла, если хотите сравнить охват с разных этапов исполнения.

Я нашел некоторые детали для этого здесь:. http://clang.llvm.org/docs/SourceBasedCodeCoverage.html

«Форвард-DECLARE INT __llvm_profile_write_file (аннулируются) и назовем его выписывать профиль Эта функция возвращает 0 при успешном завершении и ненулевым в противном случае. Вызов этой функции несколько раз добавляет данные профиля в существующий необработанный профиль на диске. "

+0

Что генерирует эта функция? файл profraw, который необходимо объединить с помощью «llvm-profdata merge -o»? или файл profdata? – LiohAu

+0

@ LiohAu: файл профайла, который необходимо объединить. – Arcank

-1

Похоже, что int __llvm_profile_write_file(void) работает для проектов Obj C в паре с CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING. Но до тех пор, пока вы добавляете один быстрый файл в проект, swift будет жаловаться .. Swift does not support profile guided optimization.. Есть ли обходные пути?

 Смежные вопросы

  • Нет связанных вопросов^_^