问题标签 [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.
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 序列化的。
如果可能的话,解释一下这个子程序是什么意思。
perl - Devel::Cover 报告分支和条件 Coverage 在报告中显示 n/a ??
我正在使用 apache 使用 Devel::Cover 生成一些 .pm 和 mason 文件的覆盖率但是对于 mason 文件,分支和条件的覆盖率显示为 n/a 而对于相同的 mason 文件语句覆盖率将达到 100%。请帮忙。
perl - Perl Devel::Cover 使用不同的命令行输入参数来测试(覆盖)my_file.pl
我是新手,请原谅我的无知。我正在尝试使用 Devel::Cover (DC) 来了解 my_file.pl Perf 文件的代码覆盖率,该文件以 arg1、arg2 作为命令行输入参数运行。我正在使用 Perl 5.8.9 和 DC 1.23。我成功执行生成 html 文件的步骤是:
perl -MDevel::Cover my_file.pl -arg1 arg1_value -arg2 arg2_value
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 文件。
您能否提供一些指示?
perl - Catalyst + mod_perl + selenium:如何开发::Cover?
我有一个包含大量测试的 Web 应用程序。我目前仅将 Devel::Cover 用于我的单元测试的覆盖率报告,但也想要我的前端 Selenium 测试的覆盖率报告。
我在我的应用程序 psgi 启动文件中尝试了“使用 Devel::Cover”。这将创建 cover_db 目录,但在运行我的 Selenium 测试时它仍然是空的。
我会很感激任何指示。
perl - 通过 Travis CI 使用 perl-helpers 时如何强制 Devel::Cover 忽略文件夹
MetaCPAN Travis CI 覆盖构建非常缓慢。请参阅https://travis-ci.org/metacpan/metacpan-web/builds/238884497 这可能部分是因为我们没有成功忽略作为我们构建的一部分/local
创建的文件夹。Carton
见 https://coveralls.io/builds/11809290
我们perl-helpers
用来帮助我们的 Travis 配置。我认为我应该能够使用DEVEL_COVER_OPTIONS
环境变量来解决这个问题,但我想我没有正确的咒语。我在下面包含了整个配置,因为一些断章取义的片段似乎具有误导性。
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
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
--version
exit()
-exitval=>NOEXIT
不起作用的东西
PERL5OPT
HARNESS_PERL_SWITCHES
+cover
HARNESS_PERL_SWITCHES
+EUMMmake test
当前的解决方法
目前我找到的唯一方法就是-MDevel::Cover
在调用时手动添加到命令行中system
。受此答案和相应测试的启发,我有以下解决方法:
perl - 如何为分叉的子进程禁用 Devel::Cover?
我注意到,当我运行我的程序perl -MDevel::Cover=-silent,-nogcov foo.pl
以收集覆盖率信息foo.pl
时,我的程序部分会大幅减速,这些部分会派生和执行非 perl 程序,如tar
,gzip
或dpkg-deb
. 感谢这个问题,我想出了如何选择性地禁用 Devel::Cover,所以我现在正在写:
这样做,每次测试减少了 5 分钟的运行时间,对于 122 次测试,我节省了 10 小时的计算时间。
不幸的是,我不能总是将此 eval 语句添加到分叉的子进程中。例如,当我使用system()
. 我想避免将我的每个system()
调用都重写为手册fork/exec
。
有没有办法为我的分叉进程或基本上不是我的脚本的所有内容禁用 Devel::Cover foo.pl
?
谢谢!
perl - Devel::Cover - 在程序结束前保存覆盖数据
问题:我可以在程序终止之前强制Devel::Cover
转储/保存代码中的覆盖率数据吗?cover->dump_coverage()
上下文:我想提取覆盖率报告,即使我用 强制结束 Perl 进程kill -9
,但Devel::Cover
无法保存其覆盖率数据。我发现它Devel::Cover
有一种在运行时关闭/打开它的方法,但这似乎并没有强制模块转储其数据。它是否有另一种方法来转储覆盖范围?
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