Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何让Devel::Cover结果显示在Hudson中?_Perl_Hudson - Fatal编程技术网

Perl 如何让Devel::Cover结果显示在Hudson中?

Perl 如何让Devel::Cover结果显示在Hudson中?,perl,hudson,Perl,Hudson,有没有可能像Cobertura插件那样,让Devel::Cover生成的覆盖率统计信息显示在Hudson的项目视图中?即使是模糊的想法也会受到赞赏 将自定义TAP格式化程序与or's prove_cover等结合起来在大量研究了稀疏文档并进行了大量尝试和错误之后,下面是我提出的一个提炼版本 #!/usr/bin/perl -w use strict; use warnings; { use TAP::Harness::JUnit; use English qw( -no_mat

有没有可能像Cobertura插件那样,让Devel::Cover生成的覆盖率统计信息显示在Hudson的项目视图中?即使是模糊的想法也会受到赞赏

将自定义TAP格式化程序与or's prove_cover等结合起来

在大量研究了稀疏文档并进行了大量尝试和错误之后,下面是我提出的一个提炼版本

#!/usr/bin/perl -w

use strict;
use warnings;
{
    use TAP::Harness::JUnit;
    use English qw( -no_match_vars $EXECUTABLE_NAME );
}

my $harness = TAP::Harness::JUnit->new(
    {   xmlfile    => 'results.xml',
        exec       => [
            $EXECUTABLE_NAME,
            "-I/repo/trunk/PerlLib",
            '-MDevel::Cover=-silent,1,-coverage,all',
            '-w',
        ],  
        package => 'ARC::FB',
    }   
);      

$harness->runtests(
    [ "/repo/trunk/ARC/FB/Base/basic.t"             => 'Base.basic.t' ],
    [ "/repo/trunk/ARC/FB/Base/copy_file.t"         => 'Base.copy_file.t' ],
    [ "/repo/trunk/ARC/FB/Base/create_file.t"       => 'Base.create_file.t' ],
    [ "/repo/trunk/ARC/FB/Base/new.t"               => 'Base.new.t' ],
    [ "/repo/trunk/ARC/FB/Base/report.t"            => 'Base.report.t' ],
    [ "/repo/trunk/ARC/FB/Lurker/build_data_file.t" => 'Lurker.build_data_file.t' ],
    [ "/repo/trunk/ARC/FB/Lurker/cleanup.t"         => 'Lurker.cleanup.t' ],
    [ "/repo/trunk/ARC/FB/Lurker/remove_file.t"     => 'Lurker.remove_file.t' ],
    [ "/repo/trunk/ARC/FB/Lurker/write_config.t"    => 'Lurker.write_config.t' ],
    [ "/repo/trunk/ARC/FB/Sign/add_tokens.t"        => 'Sign.add_tokens.t' ], 
    [ "/repo/trunk/ARC/FB/Sign/interpret.t"         => 'Sign.interpret.t' ],
    [ "/repo/trunk/ARC/FB/Sign/new.t"               => 'Sign.new.t' ],
);  

__END__
将上述程序保存在/usr/local/bin/harness.pl中,然后配置Jenkins作业以在shell中执行此操作:

cover -delete

/usr/bin/perl -w /usr/local/bin/harness.pl

cover -report clover
然后添加两个生成后操作:

  • 发布三叶草覆盖率报告(带目录封面,文件名 (clover.xml)
  • 发布JUnit测试结果报告(w/XMLs results.xml)
  • 保存并运行它

    关键概念:

    • Jenkins不理解TAP(即Perl*.t的输出),但它理解 理解JUnitXML。因此,TAP::Harness::JUnit模块将JUnit转换添加为生成TAP::Harness包装的TAP
    • Devel::Cover及其选项需要作为TAP::harnese exec参数的一部分内联提供
    • Devel::如果运行污染检查,Cover会发出巨大的警告噪音
    JUnit转换的TAP数据在Jenkins中呈现良好。然而,Clover报告缺少源覆盖率视图。当你钻到最后的三叶草报告链接詹金斯给出了404页


    这是在Jenkins 4.478版和Clover插件4.0.6-h-1版上发布的。

    我不确定是否有人想要“模糊的想法”。。。“伪实现”怎么样?我想我的意思是:“如果你听到任何可以为我指明方向的东西,请写下来!”:)我不确定你是否想听到这些,但你可以自己编写插件。是的,我一直在考虑为Devel::Cover编写Hudson插件,但为什么这样一个插件还不存在的问题令人不安。选择Hudson作为CI服务器并非最终决定。也许有一些替代方案已经支持这一点?是时候重新开始搜索了。。。