critic.t 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #!/usr/bin/perl
  2. #
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; either version 2 of the License, or
  6. # (at your option) any later version.
  7. #
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details.
  12. #
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program. If not, see <https://www.gnu.org/licenses/>.
  15. use strict;
  16. use warnings;
  17. use Test::More;
  18. use Test::Dpkg qw(:needs);
  19. test_needs_author();
  20. test_needs_module('Test::Perl::Critic');
  21. test_needs_srcdir_switch();
  22. my @policies = qw(
  23. BuiltinFunctions::ProhibitBooleanGrep
  24. BuiltinFunctions::ProhibitLvalueSubstr
  25. BuiltinFunctions::ProhibitReverseSortBlock
  26. BuiltinFunctions::ProhibitSleepViaSelect
  27. BuiltinFunctions::ProhibitStringySplit
  28. BuiltinFunctions::ProhibitUniversalCan
  29. BuiltinFunctions::ProhibitUniversalIsa
  30. BuiltinFunctions::ProhibitUselessTopic
  31. BuiltinFunctions::ProhibitVoidGrep
  32. BuiltinFunctions::ProhibitVoidMap
  33. BuiltinFunctions::RequireBlockGrep
  34. BuiltinFunctions::RequireBlockMap
  35. BuiltinFunctions::RequireGlobFunction
  36. BuiltinFunctions::RequireSimpleSortBlock
  37. ClassHierarchies::ProhibitAutoloading
  38. ClassHierarchies::ProhibitExplicitISA
  39. ClassHierarchies::ProhibitOneArgBless
  40. CodeLayout::ProhibitHardTabs
  41. CodeLayout::ProhibitQuotedWordLists
  42. CodeLayout::ProhibitTrailingWhitespace
  43. CodeLayout::RequireConsistentNewlines
  44. ControlStructures::ProhibitCStyleForLoops
  45. ControlStructures::ProhibitLabelsWithSpecialBlockNames
  46. ControlStructures::ProhibitMutatingListFunctions
  47. ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
  48. ControlStructures::ProhibitUntilBlocks
  49. Documentation::RequirePackageMatchesPodName
  50. InputOutput::ProhibitBarewordFileHandles
  51. InputOutput::ProhibitInteractiveTest
  52. InputOutput::ProhibitJoinedReadline
  53. InputOutput::ProhibitOneArgSelect
  54. InputOutput::ProhibitReadlineInForLoop
  55. InputOutput::ProhibitTwoArgOpen
  56. InputOutput::RequireBracedFileHandleWithPrint
  57. InputOutput::RequireCheckedOpen
  58. InputOutput::RequireEncodingWithUTF8Layer
  59. Miscellanea::ProhibitFormats
  60. Miscellanea::ProhibitUnrestrictedNoCritic
  61. Miscellanea::ProhibitUselessNoCritic
  62. Modules::ProhibitConditionalUseStatements
  63. Modules::ProhibitEvilModules
  64. Modules::RequireBarewordIncludes
  65. Modules::RequireEndWithOne
  66. Modules::RequireExplicitPackage
  67. Modules::RequireFilenameMatchesPackage
  68. NamingConventions::Capitalization
  69. Objects::ProhibitIndirectSyntax
  70. RegularExpressions::ProhibitSingleCharAlternation
  71. RegularExpressions::ProhibitUnusedCapture
  72. RegularExpressions::ProhibitUnusualDelimiters
  73. RegularExpressions::ProhibitUselessTopic
  74. RegularExpressions::RequireBracesForMultiline
  75. RegularExpressions::RequireExtendedFormatting
  76. Subroutines::ProhibitExplicitReturnUndef
  77. Subroutines::ProhibitNestedSubs
  78. Subroutines::ProhibitReturnSort
  79. Subroutines::ProhibitUnusedPrivateSubroutines
  80. Subroutines::ProtectPrivateSubs
  81. TestingAndDebugging::ProhibitNoStrict
  82. TestingAndDebugging::ProhibitNoWarnings
  83. TestingAndDebugging::RequireTestLabels
  84. TestingAndDebugging::RequireUseStrict
  85. TestingAndDebugging::RequireUseWarnings
  86. ValuesAndExpressions::ProhibitCommaSeparatedStatements
  87. ValuesAndExpressions::ProhibitComplexVersion
  88. ValuesAndExpressions::ProhibitInterpolationOfLiterals
  89. ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
  90. ValuesAndExpressions::ProhibitMismatchedOperators
  91. ValuesAndExpressions::ProhibitMixedBooleanOperators
  92. ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
  93. ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
  94. ValuesAndExpressions::ProhibitVersionStrings
  95. ValuesAndExpressions::RequireConstantVersion
  96. ValuesAndExpressions::RequireQuotedHeredocTerminator
  97. ValuesAndExpressions::RequireUpperCaseHeredocTerminator
  98. Variables::ProhibitAugmentedAssignmentInDeclaration
  99. Variables::ProhibitConditionalDeclarations
  100. Variables::ProhibitLocalVars
  101. Variables::ProhibitMatchVars
  102. Variables::ProhibitPackageVars
  103. Variables::ProhibitPerl4PackageNames
  104. Variables::ProhibitUnusedVariables
  105. Variables::ProtectPrivateVars
  106. Variables::RequireLexicalLoopIterators
  107. Variables::RequireNegativeIndices
  108. );
  109. Test::Perl::Critic->import(
  110. -profile => 't/critic/perlcriticrc',
  111. -verbose => 8,
  112. -include => \@policies,
  113. -only => 1,
  114. );
  115. my @files = Test::Dpkg::all_perl_files();
  116. plan tests => scalar @files;
  117. for my $file (@files) {
  118. critic_ok($file);
  119. }