【问题标题】:Rcov coverage changes drastically with -xrefsRcov 覆盖范围随着 -xrefs 的变化而急剧变化
【发布时间】:2011-03-27 14:57:00
【问题描述】:

我当前的 Ruby on Rails 项目通过 rcov 进行测试(具体来说,relevance rcov,我们有一个相当高的标准(如果我们有

我们使用以下命令进行测试:

rcov_cmd = "rcov --rails --text-summary \
            --include #{included_dirs} \
            --exclude #{excluded_dirs} \
            --aggregate #{coverage_dir}/coverage.data \
            --output #{coverage_dir} \

今天我发现一些代码在 rcov 报告中显示为绿色(已运行)。 Homever,我可以证明这段代码没有运行(我在函数的开头引发了一个异常,并且我的单元测试通过了)

我做了一些研究,发现了 rcov 的 --xrefs 标志,我认为它会为 rcov 报告中的每一行添加所有调用者。

我把 rcov 命令改成:

rcov_cmd = "rcov --rails --text-summary --xrefs \
        --include #{included_dirs} \
        --exclude #{excluded_dirs} \
        --aggregate #{coverage_dir}/coverage.data \
        --output #{coverage_dir} \

(注意添加的--xrefs 标志)。

我没有额外的呼叫站点信息,而是将测试覆盖率从 96% 提高到 48%。

--xrefs 会改变 rcov 的分析方式吗? (我认为它只会收集呼叫站点信息)。这与第一个命令有何不同/更好? (我已经看到如果单元测试失败,单元测试覆盖率会下降,而且我知道如果运行中出现错误,覆盖率会下降,但对我来说看起来不错)

【问题讨论】:

  • 您是否尝试过仅使用--callsites 而没有使用--xrefs 来确定是否实际上是包含的调用站点信息导致了差异?可能会缩小问题范围。
  • 我替换了 --xrefs 和 --callsites 并看到测试覆盖率同样下降

标签: ruby-on-rails ruby rcov


【解决方案1】:

来自rcov manual

--[no-]callsites
    Show callsites in generated XHTML report. (somewhat slower; disabled by default)
--[no-]xrefs
    Generate fully cross-referenced report. (includes --callsites)

来自Rcov CallSiteAnalyzer Class

A CallSiteAnalyzer can be used to obtain information about:

    * where a method is defined ("defsite")
    * where a method was called from ("callsite")

进行此分析 rcov 可以提供更准确的覆盖率信息,但执行时间更长。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2021-12-05
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    相关资源
    最近更新 更多