Ruby on rails 使用-xref时,Rcov覆盖范围会发生剧烈变化

Ruby on rails 使用-xref时,Rcov覆盖范围会发生剧烈变化,ruby-on-rails,ruby,rcov,Ruby On Rails,Ruby,Rcov,我当前的RubyonRails项目通过rcov进行测试(具体来说,我们有一个相当高的标准(如果代码覆盖率

我当前的RubyonRails项目通过rcov进行测试(具体来说,我们有一个相当高的标准(如果代码覆盖率<95%,我们将失败构建)

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

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%,而不是额外的呼叫站点信息

外部参照是否会改变rcov的分析方式?(我认为它只会收集调用站点信息)。这与第一个命令有何不同/更好? (我已经看到,如果单元测试失败,单元测试覆盖率会下降,我知道如果运行中出现错误,覆盖率会下降,但在我看来这很好)

来自:


使用此分析rcov可以以更长的执行时间为代价提供更准确的覆盖率信息。

您是否尝试过仅使用
--callsites
和不使用
--xrefs
来确定是否是包含的callsites信息导致了差异?这可能会缩小问题的范围。我替换了--xrefs和--调用站点,测试覆盖率也出现了同样的下降
--[no-]callsites
    Show callsites in generated XHTML report. (somewhat slower; disabled by default)
--[no-]xrefs
    Generate fully cross-referenced report. (includes --callsites)
A CallSiteAnalyzer can be used to obtain information about:

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