как интерпретировать scoverage. xml report - PullRequest
0 голосов
/ 06 мая 2020

Я использую scoverage в проекте Scala. Во время сборки я генерирую отчеты о покрытии HTML и XML. Мне нужно проанализировать файл XML (т.е. scoverage.xml), чтобы извлечь метрики для каждого класса: * покрытие строк: количество покрытых против общего * покрытие операторов: количество покрытых против общего * покрытие ветвей: количество покрытых единицы против общего * покрытия функций: количество охваченных по сравнению с общим

Глядя на репозиторий scoverage, я вижу, что отчет создается ScoverageXmlWriter. scala, но это не задокументировано! !

Итак, вот пример вывода оператора tag:

<statement package="<package>" class="<class>" class-type="Object" full-class-name="<package>.<class>" source="/path/to/<package>/<class>.scala" method="compileScala" start="350" end="350" line="18" branch="false" invocation-count="1" ignored="false">
</statement>

Что означает атрибут? line соответствует номеру строки в файле? а что означает start и end?

1 Ответ

0 голосов
/ 07 мая 2020

Я нашел ответы в самом коде плагина sbt охват.scala # L159-L168

  def invokedStatements: Iterable[Statement] = statements.filter(_.count > 0)
  def invokedStatementCount = invokedStatements.size
  def statementCoverage: Double = if (statementCount == 0) 1 else invokedStatementCount / statementCount.toDouble
  def statementCoveragePercent = statementCoverage * 100
  def statementCoverageFormatted: String = twoFractionDigits(statementCoveragePercent)
  def branches: Iterable[Statement] = statements.filter(_.branch)
  def branchCount: Int = branches.size
  def branchCoveragePercent = branchCoverage * 100
  def invokedBranches: Iterable[Statement] = branches.filter(_.count > 0)
  def invokedBranchesCount = invokedBranches.size

Мне просто пришлось проанализировать XML, рассматривая приведенный выше фрагмент, чтобы пересчитать количество (например, количество ветвей по сравнению с покрытыми).

...