gcov утверждает, что строки не выполнены - как это исправить? - PullRequest
0 голосов
/ 31 марта 2020

Я пишу программу в C, используя cmocka для ее юнит-тестирования. Мне удалось все настроить в Eclipse, используя MinGW на Windows 10.

Используемая версия G CC - 9.2.0

Флаги для компиляции:

-I"C:\MinGW\cmocka\include" -O0 -g3 -p -pg -ftest-coverage -fprofile-arcs -Wall -c -fmessage-length=0 -v -fPIC

Флаги для компоновщика:

-L"C:\MinGW\cmocka\lib" -p -pg -ftest-coverage -fprofile-arcs

Мне интересно, почему gcov утверждает, что некоторые строки кода никогда не выполняются?

Примеры:

Function which is 100% executed

Вы можете видеть, что вышеуказанная функция выполнена на 100%.

Tests to function for 100% coverage

Над тестами, выполненными для получите 100% покрытие.

Last line not executed

Выше видно, что последняя строка, кажется, никогда не выполняется

Test to get 80% coverage

С помощью тестов, приведенных выше, я могу получить только 80% покрытия. Согласно статистике, 5 строк инструментированы, только 4 выполнены. Как достичь 100%?

GCOV claims that return statement is never executed

Выше видно, что это еще хуже, поскольку gcov утверждает, что оператор return никогда не выполнялся!

Test that should proof, that return statement is executed at least once

Тест должен быть неверно доказан на gcov, явно - или я ошибаюсь в этом предположении - почему?

Как это исправить ?

РЕДАКТИРОВАТЬ:

После запуска gcov из командной строки, это вывод

       10:  508:static void vKoCoUpdateDelay(void)
        -:  509:{
       10:  510:  if (0U == control.transfer.u8CyclicDelay)
        -:  511:  {
        1:  512:    control.transfer.u8CyclicDelay = KOCO_U8_MESSAGE_DELAY;
        -:  513:  }
        -:  514:  else
        -:  515:  {
        9:  516:    --control.transfer.u8CyclicDelay;
        -:  517:  }
       10:  518:}

Cleary здесь gcov сообщает, что выполняется 100% кода, также последний строка выполняется 10 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...