読み込まれたポリシーを表示する
実際にロードされたポリシーを表示するには、 を使用しますPerl::Critic->policies
。
ポリシー()
このエンジンにロードされたすべての Policy オブジェクトへの参照を含むリストを返します。オブジェクトは、ロードされた順序になります。ポリシーを表示すると、追加されていないことがわかります。
目的のポリシーがリストに追加されていないことがわかります。
use strict;
use warnings;
use Perl::Critic;
run_critic($0);
exit;
sub run_critic {
my $file = shift;
my $critic = Perl::Critic->new(
-severity => 5,
-policy => 'Subroutines::ProhibitExcessComplexity',
-verbose => 5,
);
print $critic->policies(); # View loaded Policies
my @violations = $critic->critique($file);
print @violations;
}
出力:
BuiltinFunctions::ProhibitSleepViaSelect
BuiltinFunctions::ProhibitStringyEval
BuiltinFunctions::RequireGlobFunction
ClassHierarchies::ProhibitOneArgBless
ControlStructures::ProhibitMutatingListFunctions
InputOutput::ProhibitBarewordFileHandles
InputOutput::ProhibitInteractiveTest
InputOutput::ProhibitTwoArgOpen
InputOutput::RequireEncodingWithUTF8Layer
Modules::ProhibitEvilModules
Modules::RequireBarewordIncludes
Modules::RequireFilenameMatchesPackage
Subroutines::ProhibitExplicitReturnUndef
Subroutines::ProhibitNestedSubs
Subroutines::ProhibitReturnSort
Subroutines::ProhibitSubroutinePrototypes
TestingAndDebugging::ProhibitNoStrict
TestingAndDebugging::RequireUseStrict
ValuesAndExpressions::ProhibitLeadingZeros
Variables::ProhibitConditionalDeclarations
Variables::RequireLexicalLoopIterators
適切な構成オプション:-include
問題は、Constructor オプション -policy
が存在しないことです。
代わりに使用したい-include
:
-include
string のリストへの参照@PATTERNS
です。他のすべての設定に関係なく、少なくとも 1 つに一致するポリシー モジュールm/$PATTERN/ixms
が常に読み込まれます。例えば:
したがって、コンストラクターを修正します。
my $critic = Perl::Critic->new(
-severity => 5,
-include => 'Subroutines::ProhibitExcessComplexity',
-verbose => 5,
);
出力:
BuiltinFunctions::ProhibitSleepViaSelect
BuiltinFunctions::ProhibitStringyEval
BuiltinFunctions::RequireGlobFunction
ClassHierarchies::ProhibitOneArgBless
ControlStructures::ProhibitMutatingListFunctions
InputOutput::ProhibitBarewordFileHandles
InputOutput::ProhibitInteractiveTest
InputOutput::ProhibitTwoArgOpen
InputOutput::RequireEncodingWithUTF8Layer
Modules::ProhibitEvilModules
Modules::RequireBarewordIncludes
Modules::RequireFilenameMatchesPackage
Subroutines::ProhibitExcessComplexity # <--- ta da
Subroutines::ProhibitExplicitReturnUndef
Subroutines::ProhibitNestedSubs
Subroutines::ProhibitReturnSort
Subroutines::ProhibitSubroutinePrototypes
TestingAndDebugging::ProhibitNoStrict
TestingAndDebugging::RequireUseStrict
ValuesAndExpressions::ProhibitLeadingZeros
Variables::ProhibitConditionalDeclarations
Variables::RequireLexicalLoopIterators