问题标签 [devel-cover]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
115 浏览

perl - 在 Devel::CoverReport::DB 中 .12 和 .13 格式是什么意思?

我正在使用“Devel::Cover”cpan 模块生成覆盖范围,该模块生成cover_db 并在内部有一个运行子目录。在运行目录中,我得到文件cover.14。如何获得 .12 或 .13 格式的文件,这种 .12、.13 或 .14 格式是什么意思?当我使用“Devel::CoverReport”模块的cover_report 生成此文件的html 报告时,根据模块的以下子例程提到它支持.12 和.13 格式,但我得到的是.14 格式

下面是在 Devel::CoverReport::DB 中使用的子程序,它显示 .12 或 .13 格式。

read_db_file

读取并解析 DB 文件,然后返回文件中的数据结构。

默认情况下,它假定该文件是可存储的数据转储。当 storable 失败时,它会尝试使用 JSON 来加载数据。

此方法支持读取 .12 和 .13 文件格式。它可以自动检测它是用可存储的还是 JSON 序列化的。

如果可能的话,解释一下这个子程序是什么意思。

0 投票
1 回答
161 浏览

perl - Devel::Cover 报告分支和条件 Coverage 在报告中显示 n/a ??

我正在使用 apache 使用 Devel::Cover 生成一些 .pm 和 mason 文件的覆盖率但是对于 mason 文件,分支和条件的覆盖率显示为 n/a 而对于相同的 mason 文件语句覆盖率将达到 100%。请帮忙。

0 投票
0 回答
73 浏览

perl - Perl Devel::Cover 使用不同的命令行输入参数来测试(覆盖)my_file.pl

我是新手,请原谅我的无知。我正在尝试使用 Devel::Cover (DC) 来了解 my_file.pl Perf 文件的代码覆盖率,该文件以 arg1、arg2 作为命令行输入参数运行。我正在使用 Perl 5.8.9 和 DC 1.23。我成功执行生成 html 文件的步骤是:

  1. perl -MDevel::Cover my_file.pl -arg1 arg1_value -arg2 arg2_value

  2. Devel-Cover-1.23/bin/cover cover_db --report=html

现在,我没有要直接测试的包/模块。但我有调用几个包的 my_file.pl 文件。

而且我需要用几种不同的命令行 i/p 参数组合(即 arg1_different_value、arg2_different_value 等)来测试 my_file.pl。所有这些测试组合都是我的回归套件的一部分(您可以考虑顺序写入 test.txt 文件中的选项),我正在尝试查看 Devel::Cover 是否可以确保我对这些测试有 100% 的代码覆盖率.

虽然我可以在 for 循环中运行上述内容,但每次都使用不同的参数,但我不确定这是否是最好的方法,因为我最终会得到 100 个需要合并以用于任何有意义的目的的 html/report 文件。

您能否提供一些指示?

0 投票
1 回答
104 浏览

perl - Catalyst + mod_perl + selenium:如何开发::Cover?

我有一个包含大量测试的 Web 应用程序。我目前仅将 Devel::Cover 用于我的单元测试的覆盖率报告,但也想要我的前端 Selenium 测试的覆盖率报告。

我在我的应用程序 psgi 启动文件中尝试了“使用 Devel::Cover”。这将创建 cover_db 目录,但在运行我的 Selenium 测试时它仍然是空的。

我会很感激任何指示。

0 投票
1 回答
289 浏览

perl - 通过 Travis CI 使用 perl-helpers 时如何强制 Devel::Cover 忽略文件夹

MetaCPAN Travis CI 覆盖构建非常缓慢。请参阅https://travis-ci.org/metacpan/metacpan-web/builds/238884497 这可能部分是因为我们没有成功忽略作为我们构建的一部分/local创建的文件夹。Cartonhttps://coveralls.io/builds/11809290

我们perl-helpers用来帮助​​我们的 Travis 配置。我认为我应该能够使用DEVEL_COVER_OPTIONS环境变量来解决这个问题,但我想我没有正确的咒语。我在下面包含了整个配置,因为一些断章取义的片段似乎具有误导性。

0 投票
0 回答
94 浏览

perl - Devel::Cover - 无法将分支标记为可发现

老实说,我不确定这是一个错误还是我错过了什么。

Devel::Cover# uncoverable branch true以某种方式基于先前的条件忽略了我。

我有 2 个文件 -Test并且Test2-uncoverable位于Test.

现在,当未注释掉触发条件(见下文)时,我得到 50% 的分支覆盖率,如下所示:

混乱的报道

现在注释掉触发条件并再次运行所有内容,我得到:

预期覆盖率

该分支现在被正确地忽略为可发现的。唯一改变的是注释掉触发条件

我真的不明白这种行为 - 如果有人愿意尝试这个,看看这是否是我不理解某些东西或错误。

免责声明:我不是 perl 大师 :) 我试图进一步简化它,但我无法重现它——即使是简化也是值得赞赏的——也许它有助于追查它的根本原因。

编辑:我制作了这个 repo 以使其更容易重现:https ://github.com/lukaskuzmiak/Devel--Cover_coverage_issue_PoC

还有一秒钟Test2

0 投票
1 回答
246 浏览

code-coverage - 运行“cover -test”时如何从子进程中收集覆盖率,否则?(开发::封面)

(我想我已经看到了这个问题的答案,但我再也找不到了。我遇到的最接近的是这个问题)。

我正在破解prt并试图为我的更改获取完整的覆盖数据。我的一些新测试调用system($^X, 'prt', ...)运行子进程。然后我测试这些进程的输出。但是,Devel::Cover 不会在子进程中收集覆盖率数据。我如何收集这些数据,而不会导致 Devel::Cover 在我执行常规操作时运行make test?目前我有一个丑陋的解决方法(见下文),但我认为必须有一个更简单的方法。

完整的 MCVE 在这里。为了您的方便,要复制的命令行:

注释掉t/01-help.t下面描述的解决方法的第 11 行。

编辑我使用的原因是在/ /system上达到 100% 的覆盖率。这些开关由自动调用的Getopt::Long处理。如有必要,我可以在自己的代码中使用和处理出口。-h--help--versionexit()-exitval=>NOEXIT

不起作用的东西

PERL5OPT

HARNESS_PERL_SWITCHES+cover

HARNESS_PERL_SWITCHES+EUMMmake test

当前的解决方法

目前我找到的唯一方法就是-MDevel::Cover在调用时手动添加到命令行中system。受此答案相应测试的启发,我有以下解决方法:

在 MCVE 中,解决方法在此处在此处使用。

0 投票
2 回答
110 浏览

perl - 如何为分叉的子进程禁用 Devel::Cover?

我注意到,当我运行我的程序perl -MDevel::Cover=-silent,-nogcov foo.pl以收集覆盖率信息foo.pl时,我的程序部分会大幅减速,这些部分会派生和执行非 perl 程序,如tar,gzipdpkg-deb. 感谢这个问题,我想出了如何选择性地禁用 Devel::Cover,所以我现在正在写:

这样做,每次测试减少了 5 分钟的运行时间,对于 122 次测试,我节省了 10 小时的计算时间。

不幸的是,我不能总是将此 eval 语句添加到分叉的子进程中。例如,当我使用system(). 我想避免将我的每个system()调用都重写为手册fork/exec

有没有办法为我的分叉进程或基本上不是我的脚本的所有内容禁用 Devel::Cover foo.pl

谢谢!

0 投票
1 回答
62 浏览

perl - Devel::Cover - 在程序结束前保存覆盖数据

问题:我可以在程序终止之前强制Devel::Cover转储/保存代码中的覆盖率数据吗?cover->dump_coverage()

上下文:我想提取覆盖率报告,即使我用 强制结束 Perl 进程kill -9,但Devel::Cover 无法保存其覆盖率数据。我发现它Devel::Cover有一种在运行时关闭/打开它的方法,但这似乎并没有强制模块转储其数据。它是否有另一种方法来转储覆盖范围?

0 投票
1 回答
120 浏览

perl - 使用 Devel-Cover 获取覆盖率报告

我是 Perl 新手,我正在尝试为我拥有的 Perl 脚本生成覆盖率报告。我按照此处提到的步骤安装 Devel-Cover https://code.activestate.com/ppm/Devel-Cover/并运行

我得到了一些报道信息和那条消息

然后运行命令cover来生成报告,我让cover: Command not found.Tringcpan install Pod::Coverage按照输出的说明运行,但它失败了。我不确定我在这里缺少什么。我也尝试使用 Devel::Coverage

但我得到了那个输出

而且我找不到任何有关如何安装它的说明。我正在使用 Perl v5.32.0