rsconstruct 0.9.124

Rust based fast build system
//! The policies `Perl::Critic` 1.156 installs (`site_policy_names`), in its
//! order (sorted bytewise), with their default severities: what a profile
//! can name, and what it enables at a given severity. From `perlcritic
//! --noprofile --list`, plus `Variables::ProhibitEvilVariables`, which it
//! lists only once configured.

pub const SITE_POLICIES: &[(&str, u8)] = &[
    ("BuiltinFunctions::ProhibitBooleanGrep", 2),
    ("BuiltinFunctions::ProhibitComplexMappings", 3),
    ("BuiltinFunctions::ProhibitLvalueSubstr", 3),
    ("BuiltinFunctions::ProhibitReverseSortBlock", 1),
    ("BuiltinFunctions::ProhibitShiftRef", 3),
    ("BuiltinFunctions::ProhibitSleepViaSelect", 5),
    ("BuiltinFunctions::ProhibitStringyEval", 5),
    ("BuiltinFunctions::ProhibitStringySplit", 2),
    ("BuiltinFunctions::ProhibitUniversalCan", 3),
    ("BuiltinFunctions::ProhibitUniversalIsa", 3),
    ("BuiltinFunctions::ProhibitUselessTopic", 2),
    ("BuiltinFunctions::ProhibitVoidGrep", 3),
    ("BuiltinFunctions::ProhibitVoidMap", 3),
    ("BuiltinFunctions::RequireBlockGrep", 4),
    ("BuiltinFunctions::RequireBlockMap", 4),
    ("BuiltinFunctions::RequireGlobFunction", 5),
    ("BuiltinFunctions::RequireSimpleSortBlock", 3),
    ("ClassHierarchies::ProhibitAutoloading", 3),
    ("ClassHierarchies::ProhibitExplicitISA", 3),
    ("ClassHierarchies::ProhibitOneArgBless", 5),
    ("CodeLayout::ProhibitHardTabs", 3),
    ("CodeLayout::ProhibitParensWithBuiltins", 1),
    ("CodeLayout::ProhibitQuotedWordLists", 2),
    ("CodeLayout::ProhibitTrailingWhitespace", 1),
    ("CodeLayout::RequireConsistentNewlines", 4),
    ("CodeLayout::RequireTidyCode", 1),
    ("CodeLayout::RequireTrailingCommas", 1),
    ("ControlStructures::ProhibitCStyleForLoops", 2),
    ("ControlStructures::ProhibitCascadingIfElse", 3),
    ("ControlStructures::ProhibitDeepNests", 3),
    ("ControlStructures::ProhibitLabelsWithSpecialBlockNames", 4),
    ("ControlStructures::ProhibitMutatingListFunctions", 5),
    (
        "ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions",
        3,
    ),
    ("ControlStructures::ProhibitPostfixControls", 2),
    ("ControlStructures::ProhibitUnlessBlocks", 2),
    ("ControlStructures::ProhibitUnreachableCode", 4),
    ("ControlStructures::ProhibitUntilBlocks", 2),
    ("ControlStructures::ProhibitYadaOperator", 4),
    ("Documentation::PodSpelling", 1),
    ("Documentation::RequirePackageMatchesPodName", 1),
    ("Documentation::RequirePodAtEnd", 1),
    ("Documentation::RequirePodSections", 2),
    ("ErrorHandling::RequireCarping", 3),
    ("ErrorHandling::RequireCheckingReturnValueOfEval", 3),
    ("InputOutput::ProhibitBacktickOperators", 3),
    ("InputOutput::ProhibitBarewordDirHandles", 5),
    ("InputOutput::ProhibitBarewordFileHandles", 5),
    ("InputOutput::ProhibitExplicitStdin", 4),
    ("InputOutput::ProhibitInteractiveTest", 5),
    ("InputOutput::ProhibitJoinedReadline", 3),
    ("InputOutput::ProhibitOneArgSelect", 4),
    ("InputOutput::ProhibitReadlineInForLoop", 4),
    ("InputOutput::ProhibitTwoArgOpen", 5),
    ("InputOutput::RequireBracedFileHandleWithPrint", 1),
    ("InputOutput::RequireBriefOpen", 4),
    ("InputOutput::RequireCheckedClose", 2),
    ("InputOutput::RequireCheckedOpen", 3),
    ("InputOutput::RequireCheckedSyscalls", 1),
    ("InputOutput::RequireEncodingWithUTF8Layer", 5),
    ("Miscellanea::ProhibitFormats", 3),
    ("Miscellanea::ProhibitTies", 2),
    ("Miscellanea::ProhibitUnrestrictedNoCritic", 3),
    ("Miscellanea::ProhibitUselessNoCritic", 2),
    ("Modules::ProhibitAutomaticExportation", 4),
    ("Modules::ProhibitConditionalUseStatements", 3),
    ("Modules::ProhibitEvilModules", 5),
    ("Modules::ProhibitExcessMainComplexity", 3),
    ("Modules::ProhibitMultiplePackages", 4),
    ("Modules::RequireBarewordIncludes", 5),
    ("Modules::RequireEndWithOne", 4),
    ("Modules::RequireExplicitPackage", 4),
    ("Modules::RequireFilenameMatchesPackage", 5),
    ("Modules::RequireNoMatchVarsWithUseEnglish", 2),
    ("Modules::RequireVersionVar", 2),
    ("NamingConventions::Capitalization", 1),
    ("NamingConventions::ProhibitAmbiguousNames", 3),
    ("Objects::ProhibitIndirectSyntax", 4),
    ("References::ProhibitDoubleSigils", 2),
    ("RegularExpressions::ProhibitCaptureWithoutTest", 3),
    ("RegularExpressions::ProhibitComplexRegexes", 3),
    ("RegularExpressions::ProhibitEnumeratedClasses", 1),
    ("RegularExpressions::ProhibitEscapedMetacharacters", 1),
    ("RegularExpressions::ProhibitFixedStringMatches", 2),
    ("RegularExpressions::ProhibitSingleCharAlternation", 1),
    ("RegularExpressions::ProhibitUnusedCapture", 3),
    ("RegularExpressions::ProhibitUnusualDelimiters", 1),
    ("RegularExpressions::ProhibitUselessTopic", 2),
    ("RegularExpressions::RequireBracesForMultiline", 1),
    ("RegularExpressions::RequireDotMatchAnything", 2),
    ("RegularExpressions::RequireExtendedFormatting", 3),
    ("RegularExpressions::RequireLineBoundaryMatching", 2),
    ("Subroutines::ProhibitAmpersandSigils", 2),
    ("Subroutines::ProhibitBuiltinHomonyms", 4),
    ("Subroutines::ProhibitExcessComplexity", 3),
    ("Subroutines::ProhibitExplicitReturnUndef", 5),
    ("Subroutines::ProhibitManyArgs", 3),
    ("Subroutines::ProhibitNestedSubs", 5),
    ("Subroutines::ProhibitReturnSort", 5),
    ("Subroutines::ProhibitSubroutinePrototypes", 5),
    ("Subroutines::ProhibitUnusedPrivateSubroutines", 3),
    ("Subroutines::ProtectPrivateSubs", 3),
    ("Subroutines::RequireArgUnpacking", 4),
    ("Subroutines::RequireFinalReturn", 4),
    ("TestingAndDebugging::ProhibitNoStrict", 5),
    ("TestingAndDebugging::ProhibitNoWarnings", 4),
    ("TestingAndDebugging::ProhibitProlongedStrictureOverride", 4),
    ("TestingAndDebugging::RequireTestLabels", 3),
    ("TestingAndDebugging::RequireUseStrict", 5),
    ("TestingAndDebugging::RequireUseWarnings", 4),
    ("ValuesAndExpressions::ProhibitCommaSeparatedStatements", 4),
    ("ValuesAndExpressions::ProhibitComplexVersion", 3),
    ("ValuesAndExpressions::ProhibitConstantPragma", 4),
    ("ValuesAndExpressions::ProhibitEmptyQuotes", 2),
    ("ValuesAndExpressions::ProhibitEscapedCharacters", 2),
    ("ValuesAndExpressions::ProhibitImplicitNewlines", 3),
    ("ValuesAndExpressions::ProhibitInterpolationOfLiterals", 1),
    ("ValuesAndExpressions::ProhibitLeadingZeros", 5),
    ("ValuesAndExpressions::ProhibitLongChainsOfMethodCalls", 2),
    ("ValuesAndExpressions::ProhibitMagicNumbers", 2),
    ("ValuesAndExpressions::ProhibitMismatchedOperators", 3),
    ("ValuesAndExpressions::ProhibitMixedBooleanOperators", 4),
    ("ValuesAndExpressions::ProhibitNoisyQuotes", 2),
    (
        "ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters",
        3,
    ),
    (
        "ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator",
        3,
    ),
    ("ValuesAndExpressions::ProhibitVersionStrings", 3),
    ("ValuesAndExpressions::RequireConstantVersion", 2),
    ("ValuesAndExpressions::RequireInterpolationOfMetachars", 1),
    ("ValuesAndExpressions::RequireNumberSeparators", 2),
    ("ValuesAndExpressions::RequireQuotedHeredocTerminator", 3),
    ("ValuesAndExpressions::RequireUpperCaseHeredocTerminator", 2),
    ("Variables::ProhibitAugmentedAssignmentInDeclaration", 4),
    ("Variables::ProhibitConditionalDeclarations", 5),
    ("Variables::ProhibitEvilVariables", 5),
    ("Variables::ProhibitLocalVars", 2),
    ("Variables::ProhibitMatchVars", 4),
    ("Variables::ProhibitPackageVars", 3),
    ("Variables::ProhibitPerl4PackageNames", 2),
    ("Variables::ProhibitPunctuationVars", 2),
    ("Variables::ProhibitReusedNames", 3),
    ("Variables::ProhibitUnusedVariables", 3),
    ("Variables::ProtectPrivateVars", 3),
    ("Variables::RequireInitializationForLocalVars", 3),
    ("Variables::RequireLexicalLoopIterators", 5),
    ("Variables::RequireLocalizedPunctuationVars", 4),
    ("Variables::RequireNegativeIndices", 4),
];

#[cfg(test)]
mod tests {
    #[test]
    fn site_policies_are_in_perl_critic_order() {
        let names: Vec<&str> = super::SITE_POLICIES.iter().map(|(n, _)| *n).collect();
        let mut sorted = names.clone();
        sorted.sort_unstable();
        assert_eq!(names, sorted);
    }
}