Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • After all, it's things like this that CPANTS was created for in the first place.
    • SO, does this mean you'll fix Module::Install?

      My naive attempts at fixing it myself broke it even more >=(

    • I'd second this view.

      If you aren't going to have a strict conformance to the spec, then there is little point in having the checks at all.

      With more requests to add metadata to the spec, if you want people to have confidence in the META.yml bundled with distributions, then authors need to be made aware of the areas that they don't conform. CPANTS is the ideal place for that.

  • Here's what I'd recommend doing.

    Firstly, you need a new "has_perl_version" test.

    This would check that the distribution explicitly declares (presumably in it's META.yml) the version of perl that the distribution depends on.

    Secondly, once you have that in place, make the use warnings logic something like...

    if ( dist needs 5.6+ ) {
        if ( has_warnings ) {
            return pass;
        } else {
            return fail;
    } else {

  • I think you may want to revise the code for checking use_warning. CPANTS fails Finance::Currency::Convert::XE [], but 'use warnings' is right there [] on line 5 and has been since it existed! It's the only module in the distribution, so it isn't referencing something else. However, this also raised a thought about whether you check modules under the /t (or /xt) directories. Some of those modules may not have 'use warnings' for a good reason in order to test aspects of the distribution.
    • The code is ok, as it only checks .pm files in either the basedir, or in lib. If there are no modules in these places, CPANTS locates all .pm files, but skips x?t, test and inc paths.

      In this case the problem is that CPANTS didn't pick up the correct CPANTS yaml file. Instead of using the correct one (of 0.14, btw), it used an outdated yaml file left over from a CPANTS run where the 'use_warnings' metric wasn't even implemented.

      So, yes, there is a bug in CPANTS, but not in 'use_warnings'. I'll try to fix it
    • Fixed in the current version of cpants. New data is online, also.

      This distribution passes all CPANTS tests. Yay! []

      (using use.perl as a bugtracker)++

  • Moose enables warnings and strict automagically (they're turned on via Moose's import), Test::Kwalitee already dislikes this so I have to (redundantly) add use strict; to everything ... are you saying I'm gonna get my CPANTS score docked now too cause I don't add a redundant use warnings; as well?
    • Who cares about your CPANTS score though? I look at it to see if I stupidly forgot something, not to see if I have a good score.

      "use warnings" is a dumb metric because it has a runtime performance hit. If I use it during development (or make test), that's one thing... but imposing it on users of the CPAN module is not necessarily a good thing.

      I do it anyway, out of laziness, but it's not necessarily a good idea.