【问题标题】:How do I get a MakeMaker target for code coverage?如何获得代码覆盖率的 MakeMaker 目标?
【发布时间】:2021-01-24 18:12:31
【问题描述】:

在我的基于 ExtUtils::MakeMaker 的项目中,我想从我的测试中生成代码覆盖率报告。我为此使用了 Devel::Cover,但我必须手动运行它:

HARNESS_PERL_SWITCHES=-MDevel::Cover make test && cover

输入(记住)太多了,所以我想运行类似make cover 的东西。 ExtUtils::MakeMaker::Coverage 好像可以,但是我安装不了。

~/pl$ sudo cpan install ExtUtils::MakeMaker::Coverage
Loading internal logger. Log::Log4perl recommended for better logging
Reading '/Users/rwenner/.cpan/Metadata'
Database was generated on Thu, 08 Oct 2020 22:56:18 GMT
>(error): Could not expand [ExtUtils::MakeMaker::Coverage]. Check the module name.
>(info): I can suggest names if you install one of Text::Levenshtein::XS, Text::Levenshtein::Damerau::XS, Text::Levenshtein, and Text::Levenshtein::Damerau::PP
>(info): and you provide the -x option on invocation.
>(error): Skipping ExtUtils::MakeMaker::Coverage because I couldn't find a matching namespace.

为什么会这样?如何安装该模块?我可以用cpan 安装其他模块就好了,所以我认为这不是网络问题。

或者 ExtUtils::MakeMaker::Coverage 是否已经过时(看起来上次更新是从 2005 年开始的)?我应该改用什么?

【问题讨论】:

    标签: perl code-coverage makemaker


    【解决方案1】:

    Add a postamble 到你的Makefile.PL:

    # Makefile.PL
    use ExtUtils::MakeMaker;
    WriteMakefile(...);
    
    # specify additional testing targets
    package MY;
    sub MY::postamble {
        return q~
    cover :: pure_all
        HARNESS_PERL_SWITCHES=-MDevel::Cover make test && cover
    
        ~;
    }
    

    这将添加一个目标,当您运行 make cover 时将执行您想要的命令。

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2022-08-16
      • 2014-06-22
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      相关资源
      最近更新 更多