代码之家  ›  专栏  ›  技术社区  ›  RyanWilcox

Rcov覆盖率随着-xref的变化而急剧变化

  •  11
  • RyanWilcox  · 技术社区  · 16 年前

    我当前的rubyonrails项目通过rcov进行测试(特别是, relevance rcov ,而且我们有一个相当高的标准(如果代码覆盖率达到95%,则构建失败)。

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

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

    今天我在rcov报告中发现了一些注册为green(已经运行)的代码。Homever,我可以证明这段代码没有得到运行(我在函数的开头引发了一个异常,我的单元测试通过了)

    我把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的分析类型?(我以为它只会收集呼叫点信息)。这和第一个命令有什么不同/更好? (我见过如果单元测试失败,单元测试覆盖率会下降,而且我知道如果运行中出现错误,覆盖率也会下降,但我觉得这很好)

    1 回复  |  直到 16 年前
        1
  •  1
  •   mpapis    15 年前

    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可以在更长的执行时间内提供更准确的覆盖信息。