clang на основе источника покрытия: показать файлы без покрытия - PullRequest
0 голосов
/ 04 апреля 2020

Я создаю библиотеку с помощью инструментария покрытия на основе кода clang, то есть с -fprofile-instr-generate и -fcoverage-mapping, флагами. Теперь я настраиваю тесты и отчеты о покрытии.

Например, предположим, что у меня есть libfoo, который содержит

file1.cpp
file2.cpp
file3.cpp

Это компилируется с указанными выше флагами, и теперь я пишу тестовое приложение, testFoo, который ссылается на libFoo и использует код из file1.cpp и file2.cpp, но ничего из file3.cpp. Когда я запускаю testFoo и печатаю покрытие кода, llvm-cov report ..., я вижу только отчеты для file1.cpp и file2.cpp.

Как получить отчет, показывающий, что file3.cpp имеет ноль покрытие

1 Ответ

1 голос
/ 11 апреля 2020

Является ли libFoo stati c библиотекой? Если это так, вам нужно поместить -Wl,--whole-archive и -Wl,--no-whole-archive вокруг libFoo.a, когда вы связываете свою программу с ним.

В противном случае вы помещаете только file1.o и file2.o в окончательный выводимый двоичный файл, и инструмент покрытия не будет знать о file3.o.

...