Leader: Chris Dolan (Attending Saturday only)
Interested: Andy Lester
Interested: Elliot Shank
Interested: Michael R. Wolf
Perl::Critic is an extensible framework for creating and applying coding standards to Perl source code. Essentially, it is a static source code analysis engine, like lint for C. New policies are getting added to Perl::Critic all the time, and you can help your fellow Perl programmers write cleaner, safer code.
Before the hackathon, you should download the latest Perl::Critic from our SVN repository, and install all of its prerequisites:
% cpan install Perl::Critic
% svn checkout http://perlcritic.tigris.org/svn/perlcritic/trunk perlcritic
Username: "guest"
Password: "" (blank)
You don't have to actually know Perl::Critic or PPI's internals to help out. Most of the work is writing test cases and thinking through the logic of matching Perl code.
You can (in order from easiest to hardest):
Here are a few Policy ideas from our TODO list that would greatly benefit the project. Policies typically live in the Perl::Critic::Policy:: namespace.
InputOutput::ProhibitJoinedReadline - recommend "local $/ = undef" instead
RegularExpressions::ProhibitComplexRegexps - If regexp is longer than N characters/lines, recommend it be split into "qr//" pieces
TestingAndDebugging::ProhibitProlongedStrictureOverride - Make sure that the lexical scope of a "no strict" is less than N lines
Variables::ProhibitTopicChangeInListFunction - avoid things like "map {s/ /+/g} @urls". Recommend for loops instead. Oh, and try to think up a better name.
ValuesAndExpressions::ProhibitComplexVersion - http://rt.cpan.org/Ticket/Display.html?id=20439
Perl::Critic can be a resource pig. Profile it and help find the hot spots.
% perl Build.PL
% ./Build
% perl -Mbib -d:DProf t/40_criticize.t
% dprofpp
This is a great way to get your feet wet and understand the power, and limitations, of Perl::Critic.
You can:
Andy Lester's set of extensions. One of them checks for variable names ending with digits, but $md5 should be OK.
Andy Lester is having a problem where he runs P::C against Socialtext Open and it complains about "Capture variable used outside conditional", but that's apparently not true.