Main Content

Judging the quality of contributed Perl code

Archive - Originally posted on "The Horse's Mouth" - 2007-06-06 07:21:10 - Graham Ellis

So you're going to download a module from Perl's CPAN. Good - you've learnt the first rule which is to re-use code that someone else has written, and NOT write your own. But then you have another conundrum - which of the dozens of modules that look as if they should be suitable should you download - which are reliable and of good quality, and which are, frankly, naff?

You can't measure "Quality". Can't put an objective number on it to rank modules. But you CAN monitor features that you'll find in well written and well maintained modules and measure those, and such a measure will be an INDICATION that a module is likely to be to a high standard. That's been christened Kwalitee - sounds like quality, but not quite the same! You'll be interested in CPANTS - The Comprehensive Perl Archive Network Testing Service.

The CPANTS service at http://cpants.perl.org is a testing service which uses automatic criteria to rank CPAN modules. The presence (or otherwise) or readme files, manifests, configuration files, etc is one of the criteria used. Then the presence of tests, a versioning system, POD documentation (for ALL the methods, please!) and POD that compile properly too is measures. A module is scored better if it has "use strict;", and it's also scored higher if it's a prerequisite of someone else's module.

If you're a CPAN contributor, you can of course write your code to get a high Kwalitee rating without it being high quality - that's rather like cheating the rankings for a search engine - and you can even use the Test::Kwalitee module that lets you check out your ranking before you submit. I probably shouldn't even tell you about the guy who has a CPAN module who will, at a price, declare your module as something that his depends on ...