В SonarQube, в чем разница в значениях между метриками «Линии для покрытия» и «Непокрытые линии»? - PullRequest
0 голосов
/ 19 сентября 2018

Я смотрю отчет Coverage на вкладке Measures анализируемого C ++ проекта SonarQube.На этой странице моя сводная информация выглядит следующим образом:

SonarQube Coverage Overview

Каковы различия между метриками "Линии для покрытия" и "Непокрытые линии"?

Я просмотрел страницу определения метрики на сайте sonarqube , но две записи там мне не помогли.

Строки для покрытия - Количество строк кода, которые могут быть охвачены модульными тестами (например, пустые строки или полные строки комментариев не рассматриваются как строки для покрытия).

Непокрытые строки - Количество строк кода, которые не охватываются модульными тестами.

При чтении я бы ожидал, что число непокрытых строк будет выше, чем в строках.чтобы покрыть число, так как первый может включать пустые строки.Если sonarqube немного понимает код, он также может исключить обработку исключений из числа «может быть охвачено модульными тестами».

Указанные цифры явно противоположны этому, поэтому я не должен правильно понимать значение.


У меня есть несколько модульных тестов, выполняемых как часть системы CI, и покрытие их кода компилируется с использованием lcov и gcov.Данные lcov передаются через genhtml для составления отдельного отчета о покрытии, в котором в некоторых случаях в настоящее время содержатся данные, поэтому у меня может возникнуть проблема частичной неверной конфигурации, что может привести к путанице.

1 Ответ

0 голосов
/ 19 сентября 2018

«Строки для покрытия» - это общее количество строк в вашем «производственном» коде, для которых в так называемом идеальном мире вы должны пройти тесты.Это каждая строка в файлах исходного кода, которая не является комментарием, пустой или подобной строкой без кода.

В реальном мире ваши тесты охватывают только некоторые из них.Пропущенные строки являются «Непокрытыми линиями».

Другими словами, вы можете выразить «Покрытие» как:

"Coverage" = 100% - 100 * "Uncovered Lines" / "Lines to Cover"
...