From a0f345b36eda134a8483be13fe75307f20809c54 Mon Sep 17 00:00:00 2001 From: Dylan Hardison Date: Wed, 27 Jan 2016 17:37:21 -0500 Subject: Bug 555438 - Improve the Bugzilla code base using Perl::Critic r=dkl,a=dylan --- t/014critic-core.t | 33 +++++++++++++++++++++++ t/critic-core.ini | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 t/014critic-core.t create mode 100644 t/critic-core.ini (limited to 't') diff --git a/t/014critic-core.t b/t/014critic-core.t new file mode 100644 index 000000000..e38e64210 --- /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 000000000..258913d1c --- /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] -- cgit v1.2.3-24-g4f1b