TODO - Things for Perl::Critic::More developers to do
####################################################################### # $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic-More/TODO.pod $ # $Date: 2007-06-06 02:56:54 -0500 (Wed, 06 Jun 2007) $ # $Author: thaljef $ # $Revision: 1609 $ #######################################################################
This should eventually take a perlcriticrc option to specify the exact set of variables.
CodeLayout::RequireUTF8
All characters must be valid UTF-8. Note that typical ASCII Perl code is a valid UTF-8 subset.
Miscellanea::B::Lint
Create a compatibility layer for the B::Lint code analyzer. Make it very clear that this runs code and thus is a security hole.
Editor::RequireViModelines
Files must have something like the following in them for Emacs and Vi:
# vim: expandtab shiftwidth=4:
In vim, this is called "modelines" and should match the following pattern (taken from Vim docs):
[text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] [text]{white}{vi:|vim:|ex:}[white]{options}
Roughly translated to regexp:
($options) = m/^ (?:\N*\S)? [ \t]+ (?:vi|vim|ex): [ \t]+ set? [ \t]+ (\N+): \N* $/xms; ($options) = m/^ (?:\N*\S)? [ \t]+ (?:vi|vim|ex): [ \t]+ (\N+) $/xms;
Watch out for escaped colons!!
The vim modeline must be within N lines of the top or bottom of the file. That N is user-settable, but defaults to 5. To learn more type ":help modelines" in vim.
Colon-delimited, equals-sign-separated name-value pairs within the first or last 10 lines of a file. For example, this:
:indentSize=4:noTabs=true:maxLineLen=78:mode=perl:
will result in settings similar to the current values being specified for Emacs and vi.
http://jedit.org/users-guide/buffer-local.html
I also discovered that Kate supports per-file modelines:
http://kate-editor.org/article/katepart_modelines
Eclipse
Documentation::RequireSynopsis
Documentation::RequireLicense
These are simplified versions of Documentation::RequirePodSections.
Miscellaneous::ProhibitBoilerplate
Complain about copy-and-paste code or docs from h2xs, Module::Starter::*, etc.
Here's a non-PPI implementation, derived from Module::Starter itself: http://search.cpan.org/src/JJORE/Carp-Clan-5.8/t/04boilerplate.t
ValuesAndExpressions::RestrictHereDocs
ValuesAndExpressions::RestrictLongStrings
Low severity.
Both of these attempt to address problems with code layout and appearance. Large blocks of inline text can disrupt the readability of code. Instead, the text should be external, in __DATA__, or simply declared in separate functions at the end of the module.
Exceptions: if the only code in a sub is a return of a long string, allow it. If there is a use Inline:: at the top of the module, allow HereDocs.
use Inline::
http://rt.cpan.org/Ticket/Display.html?id=20714
File::RequirePortableName
No spaces, punctuation, etc. See Test::Portability::Files.
ValuesAndExpressions::ProhibitMagicNumbers
The allowed_values option needs to handle ranges.
allowed_values
Needs to be tested against a wider range of $VERSION declarations.
Modules::ProhibitSuperfluousIncludes
Warn about modules that are loaded, but don't seem to be used. You would have to compare sub calls, imports, and package symbols used in the current file with those declared in the included files. This is likely to generate false positives. Would have to provide a way to configure exempt modules and symbols.
We're waiting on the following bugs to get fixed in a CPAN release of PPI:
ValuesAndExpressions::ProhibitMagicNumbers has a performance optimization that can't be done because it can't tell whether a block is really a block or not.
When fixed, uncomment the lines in _element_is_in_an_include_or_readonly_statement().
To install Perl::Critic::More, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Perl::Critic::More
CPAN shell
perl -MCPAN -e shell install Perl::Critic::More
For more information on module installation, please visit the detailed CPAN module installation guide.