summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan Hardison <dylan@mozilla.com>2016-01-27 23:37:21 +0100
committerDylan Hardison <dylan@mozilla.com>2016-01-27 23:39:00 +0100
commita0f345b36eda134a8483be13fe75307f20809c54 (patch)
tree88fa276993693c43d931f79a98218a3232dcb4a3
parent39d8526e3b986f42cce3d476319051238d5424e7 (diff)
downloadbugzilla-a0f345b36eda134a8483be13fe75307f20809c54.tar.gz
bugzilla-a0f345b36eda134a8483be13fe75307f20809c54.tar.xz
Bug 555438 - Improve the Bugzilla code base using Perl::Critic
r=dkl,a=dylan
-rw-r--r--t/014critic-core.t33
-rw-r--r--t/critic-core.ini79
2 files changed, 112 insertions, 0 deletions
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]