В чем разница между покрытием кода и покрытием строки в сонаре

Я знаю, в чем разница между покрытием строк и ветвей, но в чем разница между покрытием кода и покрытием строк? Покрывается ли прежняя инструкция?


person Bartosz Radaczyński    schedule 19.07.2012    source источник
comment
Покрытие представляется вычисляемой метрикой, которая учитывает покрытие линий и ответвлений. Не могу найти формулу :D   -  person oers    schedule 19.07.2012
comment
отсюда и вопрос. Я думаю, что это покрытие инструкций, поскольку одна строка java-кода может иметь несколько инструкций, эти две разные. Может быть, здесь будет авторитетный ответ;)   -  person Bartosz Radaczyński    schedule 19.07.2012
comment
Фабрика из сонара бродит по этому тегу, так что думаю наберусь инфы :)   -  person oers    schedule 19.07.2012


Ответы (2)


Покрытие представляет собой тонкое ;-) сочетание покрытия линии и ответвления.

Формулу можно найти на нашей странице описания показателей:

coverage = (CT + CF + LC)/(2*B + EL)

where

CT - branches that evaluated to "true" at least once
CF - branches that evaluated to "false" at least once
LC - lines covered (lines_to_cover - uncovered_lines)

B - total number of branches (2*B = conditions_to_cover)
EL - total number of executable lines (lines_to_cover)
person Fabrice - SonarSource Team    schedule 19.07.2012
comment
круто, я не смог найти эту страницу через Google... Спасибо! - person Bartosz Radaczyński; 19.07.2012
comment
Я думаю, вам нужно обновить слово в вашем URL-адресе, чтобы получить следующий URL-адрес: docs.sonarqube.org/display/SONAR/ ( sonarqube вместо codehaus ) - person Elrond_EGLDer; 17.06.2015

Чтобы расширить ответ, вы можете запросить сонар только для этих терминов:

  1. условия_для_покрытия
  2. раскрытые_условия
  3. lines_to_cover
  4. непокрытые_линии

И тогда вы можете преобразовать термины выше, используя эти уравнения:

CT + CF = conditions_to_cover - uncovered_conditions
2*B = conditions_to_cover
LC = lines_to_cover - uncovered_lines
EL = lines_to_cover

Вы можете использовать Sonar Drilldown или REST API, чтобы получить указанные выше значения метрик:

http://my.sonar.com/drilldown/measures/My-Project-Name?metric=line_coverage 

http://my.sonar.com/api/resources?resource=55555&metrics=ncloc,conditions_to_cover,uncovered_conditions,lines_to_cover,uncovered_lines,coverage,line_coverage,branch_coverage,it_conditions_to_cover,it_uncovered_conditions,it_lines_to_cover,it_uncovered_lines,it_coverage,it_line_coverage,it_branch_coverage,overall_conditions_to_cover,overall_uncovered_conditions,overall_lines_to_cover,overall_uncovered_lines,overall_coverage,overall_line_coverage,overall_branch_coverage

Эта запись в блоге содержит дополнительную информацию: http://sizustech.blogspot.com/2015/10/making-sense-of-sonar-qube-stats-like.html

person Scott Izu    schedule 10.10.2015
comment
Было очень непонятно, что CT + CF на самом деле условия_для_покрытия - непокрытые_условия и 2*B = условия_для_покрытия, спасибо за выделение! - person Roman Badiornyi; 18.01.2021