首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解读scoverage.xml报告

如何解读scoverage.xml报告
EN

Stack Overflow用户
提问于 2020-05-07 02:25:34
回答 1查看 409关注 0票数 0

我在Scala项目中使用了scoverage。在构建期间,我生成覆盖率HTML和XML报告。我需要解析XML文件(即scoverage.xml)以提取以下每个类的指标:*行覆盖率:覆盖的个数与总数*语句覆盖率:覆盖的个数与总数*分支覆盖率:覆盖的个数与总数*函数覆盖率:覆盖的个数与总数

查看scoverage存储库,我看到该报告是由ScoverageXmlWriter.scala生成的,但没有文档记录!!

下面是语句tag的输出示例

代码语言:javascript
复制
<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是否与文件中的行号对应?那么startend代表什么呢?

EN

回答 1

Stack Overflow用户

发布于 2020-05-07 09:44:58

我在sbt插件代码本身的coverage.scala#L159-L168中找到了答案。

代码语言:javascript
复制
  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,同时考虑上面的代码片段来重新计算计数(例如分支计数与覆盖的分支计数)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61642538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档