使用-xrefs,Rcov覆盖范围发生了巨大变化

Rya*_*cox 11 ruby ruby-on-rails rcov

我目前的Ruby on Rails项目通过rcov进行测试(特别是相关性rcov,我们有相当高的标准(如果我们的代码覆盖率<95%,我们就会失败).

我们使用以下命令来测试它:

rcov_cmd = "rcov --rails --text-summary \
            --include #{included_dirs} \
            --exclude #{excluded_dirs} \
            --aggregate #{coverage_dir}/coverage.data \
            --output #{coverage_dir} \
Run Code Online (Sandbox Code Playgroud)

今天我发现了一些在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} \
Run Code Online (Sandbox Code Playgroud)

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

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

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

mpa*_*pis 1

来自rcov 手册

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

来自Rcov CallSiteAnalyzer 类

A CallSiteAnalyzer can be used to obtain information about:

    * where a method is defined ("defsite")
    * where a method was called from ("callsite")
Run Code Online (Sandbox Code Playgroud)

进行这种分析 rcov 可以以更长的执行成本提供更准确的覆盖信息。