From: Dylan Hardison Date: Wed, 27 Jan 2016 22:37:21 +0000 (-0500) Subject: Bug 555438 - Improve the Bugzilla code base using Perl::Critic X-Git-Tag: release-5.1.1~93 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0f345b36eda134a8483be13fe75307f20809c54;p=thirdparty%2Fbugzilla.git Bug 555438 - Improve the Bugzilla code base using Perl::Critic r=dkl,a=dylan --- diff --git a/t/014critic-core.t b/t/014critic-core.t new file mode 100644 index 0000000000..e38e64210a --- /dev/null +++ b/t/014critic-core.t @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +# Enforce high standards against code that will be installed + +use 5.10.1; +use strict; +use warnings; +use Test::More; +use File::Spec::Functions ':ALL'; + +BEGIN { + # Don't run tests for installs or automated tests + unless ( $ENV{RELEASE_TESTING} ) { + plan( skip_all => "Author tests not required for installation" ); + } + my $config = catfile('t', 'critic-core.ini'); + unless ( eval "use Test::Perl::Critic -profile => '$config'; 1" ) { + plan skip_all => 'Test::Perl::Critic required to criticise code'; + } +} + +# need to skip t/ +all_critic_ok( + 'Bugzilla.pm', + 'Bugzilla/', + glob("*.cgi"), + glob("*.pl"), +); diff --git a/t/critic-core.ini b/t/critic-core.ini new file mode 100644 index 0000000000..258913d1cd --- /dev/null +++ b/t/critic-core.ini @@ -0,0 +1,79 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +# This is the Perl::Critic policy file for Bugzilla. +# +# The general rule here is to only add one rule at a time to this file, +# and generally only in situations where we will not generate many false +# positives (requiring spammy # no critic entries) and where we will not +# generate cargo cult behaviour in contributors. + +# start with very low requirements, should me moved to 4 soon +severity = 5 + +# Policies that are currently not implemented in the code +# these should be fixed and removed from here one by one +[-Subroutines::ProhibitExplicitReturnUndef] +[-ValuesAndExpressions::ProhibitLeadingZeros] +[-InputOutput::ProhibitTwoArgOpen] +[-InputOutput::ProhibitBarewordFileHandles] +[Variables::RequireLexicalLoopIterators] +[-BuiltinFunctions::RequireGlobFunction] +[-Variables::ProhibitConditionalDeclarations] +[-Subroutines::ProhibitReturnSort] +[-TestingAndDebugging::ProhibitNoStrict] +[Subroutines::ProhibitSubroutinePrototypes] +[-Subroutines::ProhibitNestedSubs] +[-ControlStructures::ProhibitMutatingListFunctions] +[-InputOutput::ProhibitInteractiveTest] + + + +###################################################################### +# Disabling critic sucks, configure a better policy + +[Miscellanea::ProhibitUnrestrictedNoCritic] +severity = 5 + +[Miscellanea::ProhibitUselessNoCritic] +severity = 5 + + + + + +###################################################################### +# Temporarily downgraded as the noise obscures more important tests +[Subroutines::RequireFinalReturn] +severity = 3 + +[Subroutines::RequireArgUnpacking] +severity = 3 + +[Subroutines::ProhibitBuiltinHomonyms] +severity = 3 + +[Modules::ProhibitAutomaticExportation] +severity = 3 + + + + + +###################################################################### +# Policies that Bugzilla disagrees with or tolerates as worth the risk + +[-BuiltinFunctions::ProhibitStringyEval] +#[-ClassHierarchies::ProhibitExplicitISA] +[-CodeLayout::ProhibitHardTabs] +#[-ControlStructures::ProhibitUnlessBlocks] +#[-Subroutines::ProhibitExplicitReturnUndef] +#[-TestingAndDebugging::ProhibitNoStrict] +#[-TestingAndDebugging::ProhibitNoWarnings] +#[-ValuesAndExpressions::ProhibitConstantPragma] +#[-ValuesAndExpressions::ProhibitMixedBooleanOperators] +#[-Variables::ProhibitPunctuationVars]