首页 > 解决方案 > cpancover.com 的 Perl 模块覆盖率报告

问题描述

cpancover.com生成有关 Perl 模块的代码覆盖率的报告。

我知道它只是一个使用 Devel::Cover 的网络服务器,但我想简单地理解报告的含义,例如: http ://cpancover.com/latest/JSON-PP-4.02/blib-lib-JSON-PP-pm --condition.html

表的列如下:

能否请您链接相关文档以了解这一点或为我提供这些报告的一些初步指导?

标签: perlcode-coveragecpan

解决方案


这是提供报告格式信息的文档的一部分。

Devel::Cover正如告诉我们的那样,在覆盖测试中,代码中可能存在无法检查的地方:它们是“不可覆盖的”

有时您的代码由于某种原因而无法发现。也许它是一个无法到达的 else 子句,或者是一个不应该发生的错误条件的检查。您可以告诉 Devel::Cover 某些标准是可发现的,然后当它们不被执行时它们不会被算作错误。事实上,如果它们被执行,它们就会被视为错误。[...]

在处理这一点时,可以考虑语句、分支、条件和子例程。您提供的示例报告处理条件,为此文档说

由于 Perl 短路布尔运算的方式,可以通过三种方式发现此类条件。例如$x && $y,左运算符可能永远不会为真,右运算符可能永远不会为真,整个操作可能永远不会为假。这些条件可以这样建模:

# uncoverable branch true
# uncoverable condition left
# uncoverable condition false
if ($x && !$y) {
    $x++;  # uncoverable statement
}

# uncoverable branch true
# uncoverable condition right
# uncoverable condition false
if (!$x && $y) {
}

通过这个讨论,链接的报告更有意义。

例如,这是我对链接第一行的看法。它是A && B一种条件,它涵盖了以下可能的情况:

  • 左侧 false --- 在测试中覆盖(二)

  • 左真右假 ---覆盖

  • 左右为真---覆盖(二)

然后我们单击“第 214 行”(它是一个链接)并查看总体百分位覆盖率(66 - 三分之二)。颜色很明显,代码可以在这个页面上看到

文档还说有多种报告格式,因此您可能需要进一步挖掘。然而,我并不容易看出去哪里看,我觉得有点不安。


推荐阅读