查看加载的策略
要查看实际加载的策略,请使用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
问题是构造函数选项 -policy
不存在。
相反,您想使用-include
:
-include
是对字符串列表的引用@PATTERNS
。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