тест покрытия общей библиотеки с помощью gcov [Linux / Fortran] - PullRequest
1 голос
/ 28 февраля 2011

Я пытаюсь выполнить тест покрытия общей библиотеки.Я выбрал gcov / lcov из-за того, что он бесплатный и с открытым исходным кодом, что означает, что я могу попробовать его немедленно (коммерческое программное обеспечение должно быть одобрено / куплено, много решений должно быть принятостоит времени).

Ситуация следующая - библиотека - наш продукт, написанный на Фортране, затем используется для программного обеспечения для моделирования (в частности, ADAMS от MSC.Software).Я могу скомпилировать библиотеку с -fprofile-arcs -ftest-покрытие, и она работает правильно, если используется ADAMS.Однако файлы .gcda не создаются.

Существует небольшой исполняемый файл test для проверки базового поведения библиотеки (небольшое подмножество методов).Если я скомпилирую этот исполняемый файл с переключателями проверки покрытия, я получу файлы .gcda как для самого исполняемого файла, так и для библиотеки.

Вопрос: возможно ли вызвать измерения gcov для библиотеки, если исполняемый файл, использующий библиотеку, не был скомпилирован с переключателями проверки покрытия? И если да, то как?

Можно написать обширный тест, но это будет почти как репликация ADAMS (или любого другого пакета моделирования).Или я выбрал неправильный инструмент тестирования покрытия и должен перейти на коммерческие продукты?

Заранее спасибо.

Майк

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Кажется, нет никаких проблем с проверкой покрытия кода библиотеки, которая вызывается проприетарным программным обеспечением. Стоит только обратить внимание на компиляцию всех компонентов с одинаковой версией компилятора и использование соответствующей версии gcov. В моем случае библиотека (в Фортране) была скомпилирована с помощью f77 (gcc-3.4.6), ее компонент был скомпилирован с новейшей версией gcc (gcc-4.4). Оболочка для библиотеки, используемой ADAMS, была снова скомпилирована с помощью gcc-3.4.6, а gcov - 4.1.

Использование gcc-3.4.6 для всех компонентов дало очень привлекательные результаты тестирования покрытия кода.

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

0 голосов
/ 03 марта 2011

То, как я компилирую свои программы, обычно заключается в том, чтобы предоставлять точно такие же ключи компилятору для ВСЕХ модулей, поэтому нет, я не знаю, возможно ли заставить работать gcov, когда исполняемый файл не был скомпилирован с переключателями покрытия .

Однако затем я выполняю постобработку выходных файлов из gcov, игнорируя файлы, относящиеся только к тестовому коду, но сохраняя все файлы, относящиеся к коду, напрямую называемые с помощью тестового кода, а также библиотеки. код вызывается сам по себе.

...