Gcovr генерирует данные о покрытии для 0 файлов

Я настраиваю покрытие кода для приложения iOS. Я использую XCode 5.0.2 и gcovr 3.1 для тестирования и выполнения покрытия кода для устройств iOS 7. Сначала у меня были проблемы с созданием файла .gcda, но я подписался на этот блог и решил проблему.

Я установил «Создать файлы тестового покрытия» на «Да», «Поток программы инструмента» на «Да» только для модуля «Отладка». Я также установил -fprofile-arcs -ftest-coverage для модуля отладки в «Другие флаги C». Я добавил __gcov_flush() в код своего приложения, когда приложение завершается.

Теперь файлы .gcda генерируются без проблем.

Затем я копирую это в свою рабочую область в своем домашнем каталоге. Из рабочей области я пытаюсь запустить покрытие кода для приложения. Я выполняю команду gcovr из командной строки, передавая команды –object-directory и gcov для 252 файлов gdca, которые у меня есть. В итоге я получаю такой вывод:

Gathered coverage data for 0 files

Пожалуйста, помогите мне в решении проблемы. Я потратил много времени на поиск похожих проблем, но ни одно из решений не работает.


person Jai    schedule 28.03.2014    source источник
comment
Вы поняли это?   -  person ksl    schedule 20.08.2014
comment
Может ли это быть не в состоянии найти исходные файлы? См. Ответ, который я опубликовал, касающийся аналогичной проблемы, с которой я столкнулся. stackoverflow.com/q/25403165/820657   -  person ksl    schedule 26.08.2014


Ответы (4)


Я не пытался копировать файлы .gcda в другое место, но если я перехожу в каталог, в котором по умолчанию создаются файлы gcda, а затем запускаю gcovr без аргументов, я получаю действительные результаты. Возможно, это то, что вам нужно сделать?

person Kevlar    schedule 16.04.2014
comment
У меня такая же проблема. Если я попробую ваше предложение, я получу следующий вывод: -------------------------------------- ---------------------------------------- Отслеживание отчета о покрытии кода GCC (последний последний вызов ): Файл /usr/local/bin/gcovr, строка 1972, в ‹module› print_text_report(covdata) Файл /usr/local/bin/gcovr, строка 822, в print_text_report OUTPUT.write(Directory: +options.root+\n ) TypeError: невозможно неявно преобразовать объект NoneType в str - person ksl; 20.08.2014
comment
ksi, я обнаружил, что вывод XML (-x) вместо табличного формата по умолчанию будет успешным, в противном случае я получил бы эту ошибку. - person pr1001; 04.11.2014

gcovr следует запускать из папки, в которой находятся файлы .gcda и .gcno. А корневой путь — это папка, в которой существуют исходные файлы (.c или .cpp).

При этом команда выглядит примерно так, как показано ниже.

rr-mac:gcdaFolder$ gcovr -r /path_to_C_sourceFiles/ .

Для выходного html-файла ниже работает команда

rr-mac:gcdaFolder$ gcovr --html -o Filename_rp.html -r /path_to_C_sourceFiles/ .

Примечание. Точка (.) в конце обязательна.

person Rajesh Pappireddy    schedule 12.08.2016

Для файлов результатов Xcode Coverage 0 вы должны назначить каталог объектов с файлами .gcda и .gcno, а ваш корневой путь должен содержать исходные файлы (.m .h), когда у вас есть такая папка, как «Myproject», и весь ваш исходный код в этой папке команда выглядит так:

gcovr --root="Мой проект/." --object-directory = "Build/Intermediates//..//Objects-normal/x86-64/"

person HeDa.Mei    schedule 09.10.2016

У меня была эта проблема, когда я пытался запустить gcovr, но была включена другая (от компиляции) версия gcc. Пока вы запускаете gcovr, попробуйте проверить, совпадает ли ваша версия gcc с версией gcc при компиляции вашего проекта.

person Nir Peretz    schedule 30.04.2021