Best practice to using Test::Perl::Critic
Perl::Critic loads all installed policies by default. It means, perlcritic loads "ProhibitAccessOfPrivateData" if it's installed. I don't like that policy. I don't want to write excluding rules for each optional policies. And so, I need to write a lot of policies for 'excludes' section to exclude policies, I don't like.
I got an idea. I SHOULD list include policies instead of excludes policies. It makes me happy, maybe.
Here is a complete example code:
use strict;
use warnings;
use Test::More;
eval {
require Perl::Critic;
Perl::Critic->VERSION(1.105);
require Test::Perl::Critic;
Test::Perl::Critic->VERSION(1.02);
Test::Perl::Critic->import(
-profile => \(join q{}, <DATA>)
);
};
note $@ if $@;
plan skip_all => "Perl::Critic 1.105+ or Test::Perl::Critic 1.02+ is not installed." if $@;
all_critic_ok('lib', 'script', 'bin');
__END__
only=1
# -------------------------------------------------------------------------
# Not important.
[BuiltinFunctions::ProhibitSleepViaSelect]
[BuiltinFunctions::RequireGlobFunction]
[ClassHierarchies::ProhibitOneArgBless]
# -------------------------------------------------------------------------
# Bug detection
[InputOutput::ProhibitBarewordFileHandles]
[Modules::RequireFilenameMatchesPackage]
[Subroutines::ProhibitNestedSubs]
[Subroutines::ProhibitReturnSort]
[TestingAndDebugging::RequireUseStrict]
[Variables::ProhibitConditionalDeclarations]
[Variables::RequireLexicalLoopIterators]
[TestingAndDebugging::ProhibitNoStrict]
allow=refs
# -------------------------------------------------------------------------
# Security issue detection
[InputOutput::RequireEncodingWithUTF8Layer]
[Modules::ProhibitEvilModules]
[InputOutput::ProhibitTwoArgOpen]
Published: 2013-04-24(Wed) 01:18