Вывод цветового кода Gcov с Cobertura
Я установил инструменты покрытия кода gcov на Jenkins.
Это работает нормально, но у меня проблемы с выполнением цветового кода на выходе. Количество "хитов" каждой строки является основным, но некоторые строки зеленые, когда другие красные, и я не могу сказать, почему.
Пример:
Обратите внимание, что метод setYear имеет зеленый цвет и вызывается 13 раз (ctor + 12 раз в setDateAAMMJJ, как вы можете видеть на шапке экрана)
2 ответа
Если вы посмотрите на исходный код для cobertura-plugin
На GitHub вы увидите, что:
table.source tr.coverPart td.hits, table.source tr.coverNone td.hits {
background-color: #fdd;
font-weight: bold;
}
а также
table.source tr.coverPart {
background-color: #ffd;
}
#fdd
это красный цвет,#ffd
это желтый цвет
Вы должны иметь возможность использовать в браузере "инструменты разработчика" или "инспектор", чтобы увидеть, какой класс применяется.
Что это значит?
Крайний левый желтый цвет означает, что исходный код частично покрыт, что означает, что вы, вероятно, не имеете 100% покрытия вызываемых функций.
Еще один случай, о котором я могу подумать (чистая спекуляция на данный момент), заключается в том, что некоторая оптимизация искажает освещение вашего заявления; проверьте ваши флаги компиляции.
Если вы сохранили данные (файлы lcov), вы сможете использовать genhtml
создать отчет и сравнить.
Не знаю, относится ли это к вам, но это кажется актуальным. В моем случае это красный, потому что ветвь покрытия не на 100%. При генерации xml с помощью gcovr он также добавляет данные покрытия веток.
Можно охватить все линии, но не охватить все ветви. У меня всевозможные проблемы с обложкой.
Некоторые описаны в этих постах.
Почему gcc 4.1 + gcov сообщает о 100% покрытии веток, а более новые (4.4, 4.6, 4.8) сообщают о 50% для "p = new class;" линия?
О какой ветке в деструкторе сообщает gcov?
Все еще ищу способ решить такие проблемы, как эти..