Browse Source

change perlcriticrc from blacklist to whitelist

Byron Jones 6 years ago
parent
commit
5d150afc9d
2 changed files with 115 additions and 56 deletions
  1. 114 56
      .perlcriticrc
  2. 1 0
      dev-precommit

+ 114 - 56
.perlcriticrc

@@ -1,64 +1,122 @@
-# stern
-severity = 1
-
-# http://search.cpan.org/~petdance/Perl-Critic/lib/Perl/Critic/PolicySummary.pod
-
-# don't require localised magic vars
-[-Variables::RequireLocalizedPunctuationVars]
-
-# don't require sub returns
-[-Subroutines::RequireFinalReturn]
-
-# 'return' != 'return undef'
-[-Subroutines::ProhibitExplicitReturnUndef]
-
-# version strings are nice
-[-ValuesAndExpressions::ProhibitVersionStrings]
-
-# die is fine
-[-ErrorHandling::RequireCarping]
+# use a whitelist of policies
+# avoids problems when additional policies are installed
 
 
-# packages don't need $VERSION
-[-Modules::RequireVersionVar]
+severity = 1
+only = 1
 
 
-# imho q{} and qq{} is uglier than '' and ""
-[-ValuesAndExpressions::ProhibitEmptyQuotes]
-[-ValuesAndExpressions::ProhibitNoisyQuotes]
+[BuiltinFunctions::ProhibitBooleanGrep]
+[BuiltinFunctions::ProhibitComplexMappings]
+[BuiltinFunctions::ProhibitLvalueSubstr]
+[BuiltinFunctions::ProhibitSleepViaSelect]
+[BuiltinFunctions::ProhibitStringyEval]
+[BuiltinFunctions::ProhibitStringySplit]
+[BuiltinFunctions::ProhibitUniversalCan]
+[BuiltinFunctions::ProhibitUniversalIsa]
+[BuiltinFunctions::ProhibitUselessTopic]
+[BuiltinFunctions::ProhibitVoidGrep]
+[BuiltinFunctions::ProhibitVoidMap]
+[BuiltinFunctions::RequireBlockGrep]
+[BuiltinFunctions::RequireBlockMap]
+[BuiltinFunctions::RequireGlobFunction]
+[ClassHierarchies::ProhibitAutoloading]
+[ClassHierarchies::ProhibitExplicitISA]
+[ClassHierarchies::ProhibitOneArgBless]
+[CodeLayout::ProhibitHardTabs]
+[CodeLayout::ProhibitQuotedWordLists]
+[CodeLayout::ProhibitTrailingWhitespace]
+[CodeLayout::RequireConsistentNewlines]
+[CodeLayout::RequireTidyCode]
+[CodeLayout::RequireTrailingCommas]
+[ControlStructures::ProhibitDeepNests]
+[ControlStructures::ProhibitLabelsWithSpecialBlockNames]
+[ControlStructures::ProhibitMutatingListFunctions]
+[ControlStructures::ProhibitUnreachableCode]
+[ControlStructures::ProhibitUntilBlocks]
+[ControlStructures::ProhibitYadaOperator]
+[Documentation::RequirePackageMatchesPodName]
+[Documentation::RequirePodAtEnd]
+[Documentation::RequirePodLinksIncludeText]
+[Documentation::RequirePodSections]
+[ErrorHandling::RequireCheckingReturnValueOfEval]
+[InputOutput::ProhibitBacktickOperators]
+[InputOutput::ProhibitBarewordFileHandles]
+[InputOutput::ProhibitExplicitStdin]
+[InputOutput::ProhibitInteractiveTest]
+[InputOutput::ProhibitJoinedReadline]
+[InputOutput::ProhibitOneArgSelect]
+[InputOutput::ProhibitReadlineInForLoop]
+[InputOutput::ProhibitTwoArgOpen]
+[InputOutput::RequireBriefOpen]
+[InputOutput::RequireCheckedOpen]
+[InputOutput::RequireCheckedSyscalls]
+[InputOutput::RequireEncodingWithUTF8Layer]
+[Miscellanea::ProhibitFormats]
+[Miscellanea::ProhibitTies]
+[Miscellanea::ProhibitUnrestrictedNoCritic]
+[Miscellanea::ProhibitUselessNoCritic]
+[Modules::ProhibitAutomaticExportation]
+[Modules::ProhibitConditionalUseStatements]
+[Modules::ProhibitEvilModules]
+[Modules::RequireBarewordIncludes]
+[Modules::RequireEndWithOne]
+[Modules::RequireExplicitPackage]
+[Modules::RequireFilenameMatchesPackage]
+[Modules::RequireNoMatchVarsWithUseEnglish]
+[NamingConventions::Capitalization]
+[Objects::ProhibitIndirectSyntax]
+[References::ProhibitDoubleSigils]
+[RegularExpressions::ProhibitCaptureWithoutTest]
+[RegularExpressions::ProhibitFixedStringMatches]
+[RegularExpressions::ProhibitUnusedCapture]
+[RegularExpressions::ProhibitUnusualDelimiters]
+[RegularExpressions::ProhibitUselessTopic]
+[RegularExpressions::RequireBracesForMultiline]
+[Subroutines::ProhibitAmpersandSigils]
+[Subroutines::ProhibitBuiltinHomonyms]
+[Subroutines::ProhibitManyArgs]
+[Subroutines::ProhibitNestedSubs]
+[Subroutines::ProhibitReturnSort]
+[Subroutines::ProhibitSubroutinePrototypes]
+[Subroutines::ProhibitUnusedPrivateSubroutines]
+[Subroutines::ProtectPrivateSubs]
+[Subroutines::RequireArgUnpacking]
+[TestingAndDebugging::ProhibitNoStrict]
+[TestingAndDebugging::ProhibitNoWarnings]
+[TestingAndDebugging::ProhibitProlongedStrictureOverride]
+[TestingAndDebugging::RequireTestLabels]
+[TestingAndDebugging::RequireUseStrict]
+[TestingAndDebugging::RequireUseWarnings]
+[ValuesAndExpressions::ProhibitCommaSeparatedStatements]
+[ValuesAndExpressions::ProhibitComplexVersion]
+[ValuesAndExpressions::ProhibitConstantPragma]
+[ValuesAndExpressions::ProhibitEscapedCharacters]
+[ValuesAndExpressions::ProhibitInterpolationOfLiterals]
+[ValuesAndExpressions::ProhibitLeadingZeros]
+[ValuesAndExpressions::ProhibitMismatchedOperators]
+[ValuesAndExpressions::ProhibitMixedBooleanOperators]
+[ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters]
+[ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator]
+[ValuesAndExpressions::RequireConstantVersion]
+[ValuesAndExpressions::RequireInterpolationOfMetachars]
+[ValuesAndExpressions::RequireNumberSeparators]
+[ValuesAndExpressions::RequireQuotedHeredocTerminator]
+[ValuesAndExpressions::RequireUpperCaseHeredocTerminator]
+[Variables::ProhibitAugmentedAssignmentInDeclaration]
+[Variables::ProhibitConditionalDeclarations]
+[Variables::ProhibitLocalVars]
+[Variables::ProhibitMatchVars]
+[Variables::ProhibitPackageVars]
+[Variables::ProhibitPerl4PackageNames]
+[Variables::ProhibitPunctuationVars]
+[Variables::ProhibitReusedNames]
+[Variables::ProhibitUnusedVariables]
+[Variables::ProtectPrivateVars]
+[Variables::RequireInitializationForLocalVars]
+[Variables::RequireLexicalLoopIterators]
+[Variables::RequireNegativeIndices]
 
 
-# whitelist more punctuation vars
 [Variables::ProhibitPunctuationVars]
 [Variables::ProhibitPunctuationVars]
 allow = $| $? $! $@ $0 $^O $$
 allow = $| $? $! $@ $0 $^O $$
 
 
-# no need to check all syscalls
 [InputOutput::RequireCheckedSyscalls]
 [InputOutput::RequireCheckedSyscalls]
 exclude_functions = print say
 exclude_functions = print say
-
-# functions should look like functions
-[-CodeLayout::ProhibitParensWithBuiltins]
-
-# regexs are fine
-[-RegularExpressions::ProhibitComplexRegexes]
-[-RegularExpressions::ProhibitEnumeratedClasses]
-[-RegularExpressions::ProhibitEscapedMetacharacters]
-[-RegularExpressions::ProhibitSingleCharAlternation]
-[-RegularExpressions::RequireDotMatchAnything]
-[-RegularExpressions::RequireExtendedFormatting]
-[-RegularExpressions::RequireLineBoundaryMatching]
-
-# complex code is fine
-[-BuiltinFunctions::ProhibitReverseSortBlock]
-[-BuiltinFunctions::RequireSimpleSortBlock]
-[-ControlStructures::ProhibitCStyleForLoops]
-[-ControlStructures::ProhibitCascadingIfElse]
-[-ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions]
-[-ControlStructures::ProhibitPostfixControls]
-[-ControlStructures::ProhibitUnlessBlocks]
-[-InputOutput::RequireBracedFileHandleWithPrint]
-[-InputOutput::RequireCheckedClose]
-[-Modules::ProhibitExcessMainComplexity]
-[-Modules::ProhibitMultiplePackages]
-[-NamingConventions::ProhibitAmbiguousNames]
-[-Subroutines::ProhibitExcessComplexity]
-[-ValuesAndExpressions::ProhibitImplicitNewlines]
-[-ValuesAndExpressions::ProhibitLongChainsOfMethodCalls]
-[-ValuesAndExpressions::ProhibitMagicNumbers]

+ 1 - 0
dev-precommit

@@ -103,6 +103,7 @@ foreach my $file (glob('web/*.sass')) {
 }
 }
 
 
 # tidy all the perl as per .perltidy
 # tidy all the perl as per .perltidy
+# critic all the perl as per .perlcriticrc
 
 
 my $critic = Perl::Critic->new(-profile => $RealBin . '/.perlcriticrc');
 my $critic = Perl::Critic->new(-profile => $RealBin . '/.perlcriticrc');
 find(
 find(