Login
New policy RegularExpressions::ProhibitComplexRegexes
[gknop/Perl-Critic.git] / Changes
CommitLineData
7b84ff16 1##############################################################################
02b7b45d
JRT
2# $URL$
3# $Date$
4# $Author$
5# $Revision$
7b84ff16 6##############################################################################
02b7b45d 7
8b5a642f
CD
8[1.0xx] Released on 2007-xx-xx
9
10 New Policies: (funded by a Perl Foundation grant)
11 * InputOutput::ProhibitExplicitStdin
12 * RegularExpressions::ProhibitFixedStringMatches
6a4d1045
CD
13 * RegularExpressions::RequireBracesForMultiline
14 * RegularExpressions::ProhibitUnusualDelimiters
90c0067c 15 * RegularExpressions::ProhibitUnusedCapture (still a little rough)
682ce894 16 * RegularExpressions::ProhibitComplexRegexes
8b5a642f 17
1c6e69da
CD
18 New Features:
19 * Allow a "## no critic" statement after a shebang on line 1 of a
20 file. This allows users to block violations that apply to
21 whole files and still allow shebangs.
22
8b5a642f
CD
23 New Developer Features:
24 * Perl::Critic::Utils::PPIRegexp encapsulates interaction with
25 the PPI Regexp token classes. Those classes have very sparse
6a4d1045 26 APIs, so this package hides away the ugly fiddling with PPI
8b5a642f 27 internals.
90c0067c 28 * Added a new optional_modules parameter for the .run syntax.
8b5a642f 29
bb9f1668
ES
30[1.076] Released on 2007-09-07
31
32 It appears from reports on the 1.075_001 release that the subroutine
33 sigils were indeed the problem. Release to the general populace.
34
35
70f3f307
ES
36[1.075_001] Released on 2007-09-06
37
38 Bug Fixes:
39 Undo the changes in 1.073 and 1.074. Instead, stop using the subroutine
40 sigil in import and export lists. It is suspected that the problem lies
41 with Exporter stripping off ampersands.
42
a93bf8bd
ES
43[1.074] Released on 2007-09-04
44
45 Bug Fixes:
46 Repeat the Makefile.PL change on
47 t/generate_without_optional_dependencies_wrappers.PL.
48 I love CPAN Testers.
49
fb768776
ES
50[1.073] Released on 2007-09-04
51
52 Bug Fixes:
53 Work around problems with the combination of Exporter & Readonly in
54 Makefile.PL on some machines.
55
5d0abeb9 56[1.072] Released on 2007-09-03
34cc6052
ES
57
58 Bug Fixes:
59 * The Makefile generated by Makefile.PL was not syntactically correct
d2e1a13b
ES
60 according to some versions of Solaris. Thanks to Diab Jerius
61 (DJERIUS) for discovery and testing.
34cc6052
ES
62 * Fixed mis-definition of "quiet" value for the "--profile-strictness"
63 option.
64 * Enhanced testing with the absence of optional modules.
65
6d4236fe 66[1.071] Released on 2007-08-24
6a0a13da 67
caf00bc9
ES
68 The "Brown Paper Bag" Release
69
70 Bug Fixes:
71 * Tests would not pass in environments that did not have all optional
72 dependencies installed.
73
74[1.07] Released on 2007-08-21
75
99c6a9fc 76 New Policies: (funded by a Perl Foundation grant)
b34e4aff 77 * BuiltinFunctions::ProhibitBooleanGrep
369abea9 78 * BuiltinFunctions::ProhibitComplexMappings
1c567fa8 79 * Documentation::PodSpelling
ba2c852f 80 * InputOutput::ProhibitJoinedReadline
9f12283e
ES
81 * Subroutines::ProhibitManyArgs
82 * Subroutines::RequireArgUnpacking
83 * ValuesAndExpressions::ProhibitImplicitNewlines
84 * Variables::RequireLocalizedPunctuationVars
369abea9 85
1bead068
ES
86 Other New Policies
87 * Subroutines::ProhibitNestedSubs
88
9f12283e
ES
89 New Features:
90 * The "perlcritic --profile-proto" output now includes the "add_themes"
91 parameter for each policy.
92 * The perlcritic "--strict-profile" option has been replaced with a
93 "--profile-strictness" option. This new option takes values of "warn"
94 (the default), "fatal", and "quiet", which controls what happens with
95 ignorable problems in a .perlcriticrc file.
96
8674d94e
ES
97 New Developer Features:
98 * Perl::Critic::Policy now has an overridable initialize_if_enabled()
99 method which allows a Policy to perform expensive initialization after
100 it has been determined whether the user has it enabled or not. Also,
101 this method allows a Policy to say that it should be disabled
102 regardless of what the user says.
103
9f12283e
ES
104 Actually, use of this method is now encouraged over using a
105 constructor.
106
1852a12c
ES
107 Other Stuff:
108 * Now requires the Readonly module in order to be more self-compliant.
109
7e4ad2a0 110[1.061] Released on 2007-07-24
1852a12c 111
6a0a13da
ES
112 Bug Fixes:
113 * Fix P::C::Theme-- Exporter in Perl 5.6 does not export import(), so you
114 must subclass it. *sigh*
839af03d
ES
115 * Fix P::C::Config::_validate_and_save_theme()-- eval of an empty string
116 does not reset $@/$EVAL_ERROR in Perl 5.6.
117
118 Big thanks to Anirvan Chatterjee for identifying and helping debug these
119 issues.
6a0a13da 120
a8552b47 121[1.06] Released on 2007-06-27
2e0f1c94 122
7b94eb6d 123 New Features:
2e0f1c94
ES
124 * perlcritic now emits errors for all the problems it can find for the
125 global options in the command-line parameters and .perlcriticrc file,
126 rather than bailing on the first one it encounters.
127
738830ba 128 * perlcritic now has a "--strict-profile" option which will make warnings
66186ba3
ES
129 about problems in a profile fatal.
130
738830ba
ES
131 * perlcritic now has a "--statistics-only" option which suppresses the
132 display of individual violations and only shows the additional output
133 produced by the "--statistics" option.
134
25792f52 135 Feature requests:
51ae9d9b 136 * A value for "color" can now be specified in a .perlcriticrc.
4203e2fa 137 http://rt.cpan.org/Ticket/Display.html?id=24877
25792f52 138
68a933bc
ES
139 New Policies:
140 * ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
4203e2fa 141 As suggested in http://rt.cpan.org/Ticket/Display.html?id=23290.
5ae848f1 142 * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
4203e2fa
ES
143 * Modules::ProhibitExcessMainComplexity
144 As suggested in http://rt.cpan.org/Ticket/Display.html?id=24699
68a933bc 145
7b94eb6d 146 Minor changes:
738830ba 147 * The perlcritic "--profile-proto" option now emits the short names for
7b94eb6d
ES
148 policies, rather than the full ones.
149
738830ba
ES
150 * The "-profileproto" and "-singlepolicy" options have been renamed to
151 "-profile-proto" and "-single-policy" in order to make the growing
152 number of command-line options comprehensible. The change of
153 "singlepolicy" also affects your F<.perlcriticrc> file.
154
c5609030
JRT
155[1.053] Released on 2007-06-02
156
157 *DEVELOPMENT RELEASE*
158
159 Bug Fixes:
160 Fixed bug in 15_statustics.t test script, which caused the build
161 to fail on machines that don't have Perl::Tidy installed.
162
8ff941e7 163[1.052] Released on 2007-06-01
e1a212fa 164
c5609030
JRT
165 *DEVELOPMENT RELEASE*
166
576f6411
ES
167 New Features:
168 * perlcritic now emits a summary about the scanned code when enabled by
169 the "-statistics" option.
170
464d4c66
ES
171 Policy Enhancements:
172 * InputOutput::ProhibitBacktickOperators can now be configured to only
173 check in void contexts.
174
e1a212fa 175 Bug Fixes:
db5e49e8 176 * 27073: False positive in RequireUpperCaseHeredocTerminator
67d04334 177 * 27065: CodeLayout::ProhibitTrailingWhitespace breaks under Perl 5.6.1
74135aba 178 * 26462: ControlStructures::ProhibitCascadingIfElse pod typo
e1a212fa 179 * ValuesAndExpressions::ProhibitCommaSeparatedStatements was complaining
afa2d035
JRT
180 about multiple values in the list to be iterated over by a foreach loop.
181 * Corrected PBP page numbers for some policies (Quinn Weaver).
db5e49e8 182
be3d6b0b
JRT
183[1.051] Released on 2007-04-12
184
185 *DEVELOPMENT RELEASE*
186
187 No new policies.
188 No particular bug fixes.
f1a58c7c
JRT
189
190 Internals:
191 * Added several new utility functions to support the StricterSubs distro.
192 Also, some of the existing functions in Perl-Critic-Utils have
193 changed in ways that might break your custom policies.
194
195 Miscellanea:
196 * Updated Emacs plugin (Courtesy Josh ben Jore).
197 See extras/perlcritic.el for details.
198 * Added copy of BBEdit plugin (Courtesy of Josh Clark).
199 See extras/perl_critic_for_bbedit-1_0.zip for details
200
a65bc95d
JRT
201[1.05] Released on 2007-03-19
202
203 Bug Fixes:
204 * 25557: t/20_policy_prohibittrailingwhitespace.t fails on Perl 5.8.0
205
47415a5b 206[1.04] Released on 2007-03-18
7e50c40d
JRT
207
208 Bug Fixes:
209 * 25008: Subroutines::RequireFinalReturn should allow "throw"
1e9d3270 210 * 25085: False Positive - Heredoc terminator must be quoted
47415a5b
JRT
211 * 18423: VERSION check does not notice Readonly::Scalar version
212 * 25449: Proposal of $VERSION declaration (DUPLICATE)
7e50c40d 213
74dfa143 214 New Policies:
8e2aefdb 215 * CodeLayout::ProhibitTrailingWhitespace
c948abe5 216 * ValuesAndExpressions::ProhibitCommaSeparatedStatements
74dfa143
ES
217 * Variables::ProhibitPerl4PackageNames
218
7e50c40d
JRT
219 Policy Enhancements:
220 * Subroutines::RequireFinalReturn can now be configured to recognize
47415a5b 221 your custom functions that behave like "die" or "exit".
e7c4e9fa
ES
222 * Documentation::RequirePodSections can be configured to match
223 Module::Starter:PBP or to really match the PBP book.
7e50c40d 224
34883f65 225[1.03] Released on 2007-02-13
7807e1bf
JRT
226
227 Bug Fixes:
228 * Fixed a few more problems with the %f, %F, and %r format escapes.
2d106991
JRT
229 * I forgot to put Conway's perlcriticrc file in the MANIFEST. Sorry.
230
231 Interface Changes:
34883f65
JRT
232 * Perl::Critic::Utils automatically exports everything. However,
233 this is deprecated. In the future, you must request your exports.
2d106991 234
34883f65
JRT
235 Policy Changes:
236 * Duplicate violations of RequireExcplicitPackage are now squelched,
237 in the same way as RequireUseStrict and RequireUseWarnings.
7807e1bf 238
dd85a2e2 239[1.02] Released on 2007-02-11
7580d822
JRT
240
241 Bug Fixes:
242 * "undef" incorrectly triggered ProhibitMutatingListFunctions.
dd85a2e2
JRT
243 * 24876: %f and %F escapes not working in custom "verbose" format strings.
244 * 24875: Documentation bug in TestingAndDebugging::ProhibitNoStrict
7580d822 245
9fb2d1dc
AM
246 New Policies:
247 * InputOutput::RequireCheckedOpen
248 * InputOutput::RequireCheckedClose
249
dd85a2e2
JRT
250 Other Cool Stuff:
251 * Added Conway's own suggested Perl::Critic configuration as
252 examples/perlcriticrc-conway.
253
254 * See the examples/ directory for some neat demonstrations of using
255 the Perl::Critic API. Contributed by Elliot Shank.
256
bbf4108c
ES
257 Interface Changes:
258 * Perl::Critic::Utils no longer exports anything by default. Policies
259 outside the distribution will need to specify what exactly they need
260 from this module. There are a number of tags that can be used in
261 addition to individual imports.
262
839f3ee0
JRT
263[1.01] Released on 2007-01-24
264
265 PRODUCTION RELEASE: You may now consider the public Perl::Critic
266 API as "stable." Future minor releases will focus on bug fixes,
267 new policies, and internal refactoring.
16cfe89e 268
a320d043
JRT
269 Bug Fixes:
270 * Fixed memory leak. This was reported by the Parrot team at
271 http://rt.perl.org/rt3/Ticket/Display.html?id=41230
16cfe89e 272
c10663c1 273[0.23] Released on 2007-01-19
e2d4c0f0
JRT
274
275 Bug Fixes:
276 * 23994: Test 56 in t/05_utils.t of Perl::Critic v0.22 fails
b9e520c1 277 * 24005: test 95 in t/13_bundled_policies fails in 0.22
9eb1fee5 278
e2d4c0f0 279
34510f7e
JRT
280 Groovy New Features:
281 * Added '%F' to the Violation format specifications. This will
282 give you just the name of file where the violation occurred
283 (i.e. without the path).
284
b9e520c1
JRT
285 * Improved validation of .perlcriticrc file. An invalid
286 default setting will now cause a fatal exception. A
287 strange-looking policy name will cause a warning.
0d63e03a 288
98768f5b
JRT
289
290 Interface Changes:
291 * The syntax for theme expressions has changed. Instead of using
a320d043 292 mathematical operators qw(+ * -) you must now use the logical
98768f5b
JRT
293 operators qw(|| && !). See the Perl::Critic docs for more info.
294
e2d4c0f0
JRT
295 * The @GLOBALS and @BUILTINS variables are no longer exported by
296 Perl::Critic::Utils. Use the is_perl_global() and is_perl_builtin()
297 functions instead.
98768f5b 298
e178fe38 299 * Perl::Critic::Policy::policy_parameters() has bee renamed to
98768f5b
JRT
300 Perl::Critic::Policy::supported_paramters(). This was an
301 undocumented feature anyway, so it shouldn't affect anyone.
302
303
304 Other Internal Changes:
305 * Perl::Critic now requires B::Keywords v1.05 or newer.
306
307 * A few internal classes have been refactored. As a result,
308 Set::Scalar is no longer a required dependency.
e2d4c0f0
JRT
309
310
59c20113 311[0.22] Released on 2006-12-15
4994405b 312
0bcb38c0 313 New Features:
fd5bd7b5
JRT
314 * Introduced named severity levels: gentle, stern, harsh, cruel, brutal
315 You can use these named levels instead of the numeric ones.
316 For example: "perlcritic --severity=cruel MyModule.pm"
59c20113 317 Or just: "perlcritic --cruel MyModule.pm"
fd5bd7b5
JRT
318
319 * For perlcritic, the "-List" option has been renamed to
320 "-profileproto". The output now includes the names of the
59c20113 321 parameters that each Policy supports, if any.
fd5bd7b5
JRT
322
323 * Improved validation of Policy parameters in your F<.perlcriticrc>
59c20113 324 Any invalid parameter now causes a fatal exception.
0bcb38c0
JRT
325
326 Major Changes:
327 * Reassigned themes for most policies. Now there are fewer
59c20113
JRT
328 themes and they are organized around programming concepts
329 instead of severity levels. If you have assigned your own
330 themes to any Policies, they should still work as expected.
0bcb38c0 331
e2365912
ES
332 Policy Changes:
333 * ErrorHandling::RequireCarping will not complain if it can figure
334 out that the die or warn message will always end in a newline
335 ("\n"). The idea is that, if you put the newline there, you
336 don't indend for there to be any file/line/stack information
337 emitted, in which case you really don't want carp/croak.
338
e97e0a99
ES
339 You can restore the old strict behavior by giving the policy
340 a false value for "allow_messages_ending_with_newlines" in your
341 configuration.
342
0bcb38c0 343 Misc Changes:
fd5bd7b5 344
7410be2d 345 Added single-letter uppercase alternatives for some perlcritic options.
4994405b 346
82bdf993 347[0.21_01] Released on 2006-12-03
3f5f950c
CD
348
349 New Policies:
d0393fa4 350 * TestingAndDebugging::ProhibitProlongedStrictureOverride
188e5619 351 * ControlStructures::ProhibitMutatingListFunctions
3f5f950c 352
a04c6a19
JRT
353 New Features:
354 * Say "perlcritic -List" to get an expanded listing of all Policies.
355 The format is suitable for use as your .perlcriticrc file.
188e5619
JRT
356 * Say "perlcritic -doc PATTERN" to get the documentation for all
357 Policies that match m/PATTERN/imx. This is a little easier than
358 typing in the full name of the Policy module with "perldoc".
585ddee1
ES
359 * Say "perlcritic --singlepolicy PATTERN" to use one and only one
360 policy.
fb634cf5
AL
361 * Can now specify exceptions to Variables::ProhibitPackageVars,
362 for packages like File::Find that only interface through
363 package variables.
a04c6a19
JRT
364
365 Bug Fixes:
366 * 21713 false positive for parens used with substr and unpack.
367 * 22890 allow Rcs keywords in POD.
368
095ee6e3
AL
369 Internals:
370 * Testing system overhauled. Details on the Policy/subtest
371 framework is in t/run.t.
4a7a7227
AL
372 * Added Perl::Critic::Utils::words_from_string. This is safer
373 than plain old C<split /\s+/>.
095ee6e3 374
7f03b11b 375[0.21] Released on 2006-11-05
1876bbe8
CD
376
377 New Policies:
e7f2d995 378 * BuiltinFunctions::ProhibitReverseSortBlock
d392fbb1
JRT
379 * BuiltinFunctions::ProhibitVoidGrep
380 * BuiltinFunctions::ProhibitVoidMap
70390a27 381 * CodeLayout::RequireConsistentNewlines
94dc7f45
JRT
382 * Modules::RequireFilenameMatchesPackage
383 * TestingAndDebugging::RequireTestLabels
384 * ValuesAndExpressions::ProhibitMismatchedOperators
1876bbe8 385
0ff2db41 386 New Features:
7eb74da0
JRT
387 * Introduced policy "themes." Themes are arbitrary names that can
388 be used to identify a group of related Policies. You can select
94dc7f45
JRT
389 your favorite policies by combining themes in a mathematic expression
390 such as "pbp * (danger + risky)". See POD for details.
0ff2db41
JRT
391 * perlcritic output is colorized if you have Term::ANSIColor. This
392 only works on non-Win32 platforms. Use -nocolor switch to disable.
393 * Say "perlcritic -count" to get just the the total number of
7eb74da0 394 violations per file. Use this feature to quickly identify hot-spots.
94dc7f45
JRT
395 * Use the -only switch to choose only from policies mentioned in your
396 .perlcriticrc file. This is useful if you usually only want to
397 work with a small subset of the policies.
7b84ff16 398 * Default values for most of the perlcritic and Perl::Critic options
0ff2db41
JRT
399 can now be defined in your .perlcriticrc file. See POD for details.
400
401 Bug Fixes:
402 * 21236: wrong page number for "printing to filehandles"
403 * 21916: File handle ... wrong page reference in PBP [DUPE]
404 * 21714: false positive for capture var used in ternary condition
405 * 21718: No skip for File::Slurp in includes.t
19e61c75
AL
406 * ProhibitBarewordFilehandles doesn't complain if you open
407 STDIN, STDOUT or STDERR.
fdd4a3c6
CD
408 * Parrot 40564: Subroutines::RequireFinalReturn should allow die,
409 exit, etc.
7b84ff16
JRT
410 * Each "for" and "foreach" loop now adds one point to the McCabe
411 complexity score.
0ff2db41 412
1876bbe8 413 Other Stuff:
7eb74da0
JRT
414 * The internals of Perl::Critic have been significantly refactored,
415 but should still be compatible with existing third-party Policies.
1876bbe8 416 * Added author-only tests to the release, but disabled by default
113ba0d8 417 * New Perl::Critic::Utils::shebang_line() method
7eb74da0
JRT
418 * Support for filename-based policies
419 * Additional prerequisite: Set::Scalar
420 * Now requires PPI version 1.118
1876bbe8
CD
421
422[0.20] Released on 2006-09-10
9ee6a397
JRT
423
424 Perl::Critic now requires PPI version 1.117, which fixes
425 several bugs that were introduced in version 1.116.
426
427 Bug Fixes:
428 * 21079: grep clears @SITE_POLICIES
429 * 21352: Test failures with PPI 1.117
430 * 11365: sub DESTROY detected as a builtin homonym
431
432[0.19] Released on 2006-08-20
f7231315
JRT
433
434 New Policies:
90f4300b 435 * BuiltinFunctions::ProhibitStringySplit
ea5ee301 436 * ControlStructures::ProhibitDeepNests
876c81c6 437 * RegularExpressions::ProhibitCaptureWithoutTest
f7231315 438 * Variables::RequireLexicalLoopIterator
b22c8627 439
8b5892fc 440 New Features:
be8538d2
JRT
441 * "perlcritic -quiet" suppresses the "source OK" message.
442 * Variables::ProhibitPunctuationVars is now configurable.
8b5892fc 443
c4a2374c
JRT
444 Bug Fixes:
445 * 20965: "Hard tabs used at" shouldn't check __DATA__
06202ca8 446 * 21070: ProhibitNoisyQuotes hates overload
be8538d2 447 * Punctuation variables are now exempt from ProhibitLocalVars
c4a2374c 448
876c81c6
CD
449 Other Stuff:
450 * Test coverage is now over 95%
451
be8538d2 452[0.18_01] Released on 2006-08-06
b22c8627 453
1bd11ec1
CD
454 New Policies:
455 * Variables::RequireNegativeIndices
446dddf9 456 * InputOutput::ProhibitInteractiveTest
af3b9793 457 * ErrorHandling::RequireCarping
1bd11ec1 458
b22c8627
JRT
459 Bug Fixes:
460 * RequireTidyCode tests fail if user has custom .perltidyrc file
f4aad68e 461 * 20612: RequirePerlTidy was ignoring HEREDOCs
5e5a36a8 462 * 20659: __END__ statement considered "unreachable"
f4aad68e
CD
463 * Fix for PPI::XS (no C<use overload '""'> support)
464 * Support for 'goto' in ProhibitAmpersandSigils and
465 Subroutines::RequireFinalReturn
b22c8627
JRT
466
467 Performance Enhancements:
468 * Introduced Perl::Critic::Document class. This is a facade for
469 PPI::Document which internally caches search results. This
470 reduces the running time by about 35%. The facade should be
471 invisible, unless you are doing something really sneaky.
472 * Extraction of the 'diagnostics' information is postponed
473 until it is really needed. Speedup has not been measured.
474 * Calls to helper-subs have been reordered for maximum efficiency.
475
476 Other Cool Stuff:
477 * Includes updated version of perlcritic mode for emacs. See
478 "extras/perlcritic.el" for details.
479
be8538d2 480[0.18] Released on 2006-07-16
0c43b2ce
JRT
481
482 Bug Fixes:
483 * 14855: Home discovery is dangerously naive.
484 * 20060: Incorrect page numbers in ProhibitLeadingZeros
485 and RequireNumberSeparator policies.
486 * 20068: .perlrc file - inconsistent documentation
487 * 20254: "use vars qw(@EXPORT_OK)" not recognized
02b99701
JRT
488 * 20463: No-case heredoc terminator incorrectly detected as lower case.
489 * ProhibitOneArgBless doesn't understand "bless {} => $class;"
490 * ProhibitExcessComplexity doesn't count 'while' and 'until' stmnts
491 * ProhibitLeadingZeros was falsely hits '.0456'
0c43b2ce
JRT
492
493 Enhancements:
494 * If File::HomeDir is available, we use it to locate the
495 .perlcriticrc file. This should help make Perl::Critic
496 more portable to Win32 platforms. If File::HomeDir is
497 not installed, we resort to looking at the usual
498 environment variables.
499
6a1cac48
JRT
500 Other Stuff:
501 * Added "perlcritic.el", which is a super-cool emacs minor-mode
502 that runs perl-critic on the current buffer and returns the
503 results in a sexy hot-linked "compiler" window. You can run
504 it on demand, or have it run automatically every time you
505 save the buffer. You can find this in the extras/ directory.
506 Thanks to Josh ben Jore for contributing this.
507
508 * Moved "Perl::Critic::TestUtils" into the installed build. This
509 module is only used for unit-testing Perl::Critic, but we
510 are putting it in the installation so folks who want to
511 extend Perl::Critic can make use of it.
512
be8538d2 513[0.17] Released on 2006-06-13
08624963
JRT
514
515 Bug Fixes:
491e8b78
JRT
516 * 19836: Perl-Critic0.16 fails tests during install. This was
517 caused by a bug in version 3.01 of Module::Pluggable. See
518 http://rt.cpan.org/Ticket/Display.html?id=19857 for details.
519 * Fixed bug in no-critic pragma parser.
08624963 520
9c9fbe13
CD
521 New Policies:
522 * ValuesAndExpressions::ProhibitEscapedCharacters
ba619093 523 * BuiltinFunctions::RequireSimpleSortBlock
9c9fbe13 524
491e8b78
JRT
525 Enhancements:
526 * Perl::Critic can export critique() as a static function. This
527 may appeal to folks who dislike the object-oriented interface.
528
be8538d2 529[0.16] Released on 2006-05-14
15bfb880 530
c46b6238
JRT
531 Enhancements:
532 * Perl::Critic->critique() now accepts a PPI::Document as the
533 argument. This feature creates an additional dependency on
534 Scalar::Util, but that shouldn't be a problem because it is
535 included with List::Util, which we already use.
15bfb880 536
c46b6238
JRT
537 Miscellanea:
538 * Increased PPI dependency from v1.110 to v1.112
15bfb880 539
be8538d2 540[0.15_03] Released on 2006-05-07
4f7da5f8
JRT
541
542 Bug Fixes:
543 * The "## no critic" feature is now implemented without eval-ing
544 the code. This keeps Perl::Critic pure and safe :)
15bfb880 545 * 19082: Page number for AUTOLOAD is incorrect
4f7da5f8
JRT
546
547 New Policies:
15bfb880 548 * ControlStructures::ProhibitUnreachableCode (by Peter Guzis)
977dbe11 549 * Modules::ProhibitAutomaticExportation
c5e3466b 550 * ValuesAndExpressions::ProhibitVersionStrings
4f7da5f8 551
be8538d2 552[0.15_02] Released on 2006-04-26
1bef6e21
JRT
553
554 Bug Fixes:
555 * Reimplemented the '##no critic' pragmas to have effect on the
556 line where the violation is reported, not on the line where
557 the candidate element lives. This is because some policies
558 may report violations that are nowhere near the element that
559 is being evaluated.
560 * RequireUseStrict, RequireUseWarnings, and RequireExplcitPackage
561 all emit violations for _every_ statement that violates the
562 Policy. This closes a loophole that allowed you to circumvent
563 the Policy by using '## no critic' on just the first statement
564 that violated the policy.
565 * Fixed the workaround for the magic shebang that is inserted
566 by EU::MM and M::B. This had stopped working around version 13.
567 * Fixed -noprofile option on 'perlcritic'. This also had stopped
568 working at some point.
350f4137 569
be8538d2 570[0.15_01] Released on 2006-04-16
520d94ce
JRT
571
572 Enhancements:
573 * Added diagnostic messages if the .perlcriticrc contains entries
f3ce038e 574 for Policy modules that don't seem to exist.
9b32fc61
JRT
575 * Now you can specify which policies to disable with the
576 "## no critic" pseudo-pragmas. This feature is still
577 experimental. See docs for details.
55ae7242
JRT
578 * perlcritic's directory searching now skips backup files, such
579 as *.swp, *.bak and *~. It also ignores version control system
580 directories, and the blib directory in module build directories.
9b32fc61 581
520d94ce
JRT
582 Bug Fixes:
583 * 18386: Bad example in POD for Documentation::RequirePodSections
9b32fc61 584 * 18670: Test failure if Perl::Tidy is not installed
f3ce038e 585 * 18698: Policy idea ProhibitUniversalFunctions (see New Policies)
520d94ce
JRT
586 * RequireInterpolationOfMetachars falsely hit strings like 'foo=s@'
587 which are commonly used with Getopt::Long.
588
7d2c51b1 589 New Policies:
15bfb880
JRT
590 * BuiltinFunctions::ProhibitUniversalCan (by Chris Dolan)
591 * BuiltinFunctions::ProhibitUniversalIsa (by Chris Dolan)
520d94ce 592
55ae7242
JRT
593 Miscellanea:
594 * All spurrious options for `perlcritic` are now fatal.
a5eaeaa4 595 * Changed several of the -verbose formats to be more readable.
55ae7242
JRT
596 * Explicit -severity option now overrides -[12345] shortcuts instead
597 of being the other way around.
598
599
a5eaeaa4 600
be8538d2 601[0.15] Released on 2006-03-26
df092b01 602
871ec032
JRT
603 Bug Fixes:
604 * 17964: Insists my code is not tidy (may not be fixed for all cases)
df092b01 605
be8538d2 606[0.14_02] Released on 2006-03-19
302ea648 607
b87b00dd
JRT
608 Bug Fixes:
609 * 15653: False positive in OneArgSelect (fixed for real this time)
610
5457cbc2 611 New Policies:
e2ec15ae 612 * ClassHierarchies::ProhibitAutoloading
c169e1bd 613 * Documentation::RequirePodSections
15bfb880 614 * InputOutput::RequireBracedFileHandleWithPrint
5457cbc2 615 * ValuesAndExpressions::ProhibitMixedBooleanOperators
2ec37fe2 616 * Variables::RequireInitializationForLocalVars
5457cbc2 617
be8538d2 618[0.14_01] Released on 2006-03-05
fc1186f9 619
20ceb4a0 620 Bug Fixes:
a7753069 621 * 14731: False positive: Builtin function called with parens
20ceb4a0
JRT
622 * 17554: False positive in CodeLayout::RequireTrailingCommas
623
fc1186f9
CD
624 New Policies:
625 * ClassHierarchies::ProhibitExplicitISA
013195d6 626 * InputOutput::ProhibitReadlineInForLoop
f8966b15
JRT
627 * Miscellanea::ProhibitFormats
628 * Miscellanea::ProhibitTies
5cb27b1a 629 * Variables::ProhibitConditionalDeclarations
fc1186f9 630
be8538d2 631[0.14] Released on 2006-01-29
f4814c30 632
06d28f35
JRT
633 More documentation edits.
634
b672fd9e 635 New Policies:
8de08c2e 636 * Documentation::RequirePodAtEnd
38ce10c1 637 * Subroutines::ProtectPrivateSubs
b672fd9e 638 * Variables::ProhibitMatchVars
38ce10c1 639 * Variables::ProtectPrivateVars
b672fd9e 640
06d28f35
JRT
641 Bug Fixes:
642 * 15295: "## no critic" pragmas too aggresive on compound statements.
8de08c2e 643 * t/01_config.t failed in the presence of third-party policies
9ad4bbe8
JRT
644
645[0.13_05] Not released
646
647 More documentation edits.
648
2e3c7424
JRT
649 Implemented workaround for failing pod_coverage tests.
650
9ad4bbe8
JRT
651 Bug Fixes:
652 * 16906: tr/// created false-postives with RegularExpression polices.
f4814c30 653
be8538d2 654[0.13_04] Released on 2005-12-31
a2969b87
JRT
655
656 Moved DEVELOPER.pod file into the Perl/Critic dir.
657
f4814c30
JRT
658 More documentation edits.
659
e2ec15ae 660[0.13_03] Released on 20051230
70d719da 661
2d119dc9
JRT
662 perlcritic now prints 'source OK' if it doesn't find any
663 violations. This gives folks a warm fuzzy feeling.
664
665 Tweaked some test cases that were failing on my Solaris
666 environment at work.
667
be8538d2 668[0.13_02] Released on 2005-12-29
2d119dc9
JRT
669
670 Fixed Config to recognize fully-qualified module names in the
671 .perlcriticrc file.
672
673 Various documentation edits.
70d719da 674
be8538d2 675[0.13_01] Released on 2005-12-28
5635926d
JRT
676
677 Replaced 'priority' concept with 'severity'. Now each Policy module
678 has a predefined severity level ranging from 1 to 5. By default,
679 perlcritic only reports the most severe violations. You can adjust
680 the severity threshold at the command line, and you can change
681 the severity for any Policy using the config file.
682
c5a01eb8
JRT
683 Chris implemented the applies_to() mechanism, which allows each Policy
684 class to declare the types of PPI elements that it wants to examine.
5635926d
JRT
685 When traversing the document, Perl::Critic invokes the Policy only
686 for elements that are of the correct type. This improves performance
687 by about 33%.
688
689 Perl::Critic now uses a Plugin architecture to automatically
690 discover Policy modules. So if you have custom Policies, all you
691 have to do is install them in the Perl::Critic::Policy namespace --
692 no need to add anything to your .perlcriticrc file. If you write
693 policies in a different namespace, you can configure that too. See
694 the Perl::Critic::Config docs for details.
695
696 New Policies:
697 * Modules::RequireEndWithOne
698 * NamingConventions::ProhibitAmbiguousNames
c5a01eb8 699 * References::ProhibitDoubleSigils
5635926d 700 * Subroutines::RequireFinalReturn
c2f9579b
JRT
701 * Subroutines::ProhibitAmpersandSigils
702 * Subroutines::ProhibitExcessComplexity
917d9f11
JRT
703 * TestingAndDebugging::ProhibitNoStrict
704 * TestingAndDebugging::ProhibitNoWarnings
5635926d
JRT
705
706 Bug Fixes:
707 * 15101: Plugin architecture improves support for 3rd-party code
708 * 16319: Fixed incorrect PBP page number in ProhibitBarwordFilehandle
709 * 16321: Lists of empty quotes are now allowed by ProhibitQuotedWordLists
710 * 16288: Empty lists caused a fatal error RequireTrailingCommas
711 * 15653: Fixed false positive in OneArgSelect.
712
be8538d2 713[0.13] Released on 2005-10-31
59b05e08 714
839f3ee0 715 Official release of 0.12_03. No code major changes.
59b05e08
JRT
716
717[0.12_03] Not released
718
719 Renamed -Policy option to -include. Added -exclude to give the
720 opposite effect.
721
722 Refactored constructor of Perl::Critic. Now, most of the work
723 is delegated to Perl::Critic::Config. I'm not sure I like how
724 this turned out, but we'll see how it goes.
725
726 Renamed some Policy modules to be a bit more comprehensible. Note
727 that you may need to change your .perlcriticrc file accordingly.
728 I also suggest removing your current Perl::Critic installation
729 before installing this one.
730
731 Name Changes:
732 * ProhibitUnpackagedCode => RequireExplicitPackage
733 * RequireQuotedWords => ProhibitQuotedWordLists
734
735 Improved error message when Perl::Critic dies because PPI can't
736 parsee the input code.
737
738 Changed output of -help to be more terse.
739
740 Edited POD.
741
742[0.12_02] Not released
743
744 Added -Policy option to perlcritic. The idea is to provide a
745 compact interface for selecting Policy modules at the command-line.
746 This feature is experimental and subject to change.
747
748 Added a warning message if -verbose value looks strange. In most
749 applications, the -verbose option does not require a value, so people
750 might be puzzled when they write 'perlcritic -verbose my_file.pm' and
751 nothing seems to happen.
752
753 Command-line options to perlcritic are now case-sensitive. This
754 makes it easier to abbreviate options that start with the same letters
755 (e.g. 'Version' and 'verbose')
756
757 Fixed the new Policy modules that were misnamed and misplaced in the
758 previous distribution.
759
760[0.12_01] Not released
761
762 Rewrote some of the ControlStructures and BuiltinFunction
763 policies to be simpler (and probably a little faster).
764
765 Edited POD. Fixed some typos. Added PREREQUISITES section
766 to Perl::Critic documentation.
767
768 Fixed the -verbose FORMAT option so that you can put metachars
769 in the FORMAT specification. If using perlcritic, be careful to
770 protect them from getting munged by the shell first.
771
772 Replaced ProhibitRequireStatements with RequireBarewordIncludes
773 module. Courtesy of Chris Dolan <cdolan@cpan.org>
774
775 Added configuration to ProhibitInterpolationOfLiterals so that
776 certain flavors of quotes can be exempt. This is for folks who
777 have configured their editor to use special syntax highlighting
778 for certain kinds of strings (SQL, for example).
779
780 perlcritic now accepts multiple file arguments, so now you can
781 critique your entire distribution in one shot. As a result, the
782 output-formats have changed slightly.
783
784 New Policy modules:
785 * BuiltinFunctions::ProhibitLvalueSubstr
786 * BuiltinFunctions::ProhibitSleepViaSelect
787 * ClassHierarchies::ProhibitOneArgBless
788 * CodeLayout::RequireTrailingCommas
789 * CodeLayout::RequireQuotedWordLists
790 * InputOutput::ProhibitTwoArgOpen
791 * InputOutput::ProhibitOneArgSelect
792 * InputOutput::ProhibitBarewordFileHandles
793 * Miscellanea::RequireRcsKeywords
794 * Modules::RequireVersionVar
795 * RegularExpressions::RequireExtendedFormatting
796 * RegularExpressions::RequireLineBoundaryMatching
797
798
799 Bug fixes:
800 14923: 'require' is now permitted. See RequireBarewordIncludes.
801 15022: Fixed false-positives when keywords are used as hash keys.
802 15023: Fixed spurious Violations by removing magic shebang.
803 15031: Fixed spelling mistakes (and probably added some new ones).
804 15233: Postfix 'if' is now allowed with 'die', 'croak', etc.
805
be8538d2 806[0.12] Released 2005-10-10
59b05e08
JRT
807
808 Redesigned the 'verbose' feature. Now the output format
809 can be user-defined using a sprintf-like specification.
810 perlciritc also has a predefined output format that is
811 compatible with grep mode in editors like vim and emacs.
812
813 'return' is now exempt from ProhibitParensWithBuiltins. I may
814 extend this exemption to all unary functions.
815
816 Edited POD. Added a super brief description of each policy
817 in the main Perl::Critic documentation. Added details about
818 editor integration.
819
820 Additional Prerequisites:
821 * String::Format
822
823[0.11] Not released
824
825 The internal dynamics and API of Perl::Critic have changed
826 considerably. The result is a 300% increase in performance.
827 See the POD in Perl::Critic::Policy for details.
828
829 New Features:
830 * Added -verbose option to put more stuff in the output. In the
831 extreme, you can get the POD from Policy attached to each
832 and every violation.
833
834 Additional Prerequisites:
835 * IO::String
836 * Pod::PlainText
837
be8538d2 838[0.10] Released 2005-10-05
59b05e08
JRT
839
840 Fixed stupid bug in newest Policy modules. They were returning
841 PPI objects instead of Perl::Critic::Violation objects. Doh!
842
843 Fixed test scripts to prevent failures if the user already has a
844 .perlcriticrc file.
845
846 'ProhibitHardTabs' now allows leading tabs by default.
847
848 Put the Changes file in reverse-chronological order, so the most
849 recent stuff is easy to find at the top of the file
850
be8538d2 851[0.09] Released 2005-10-04
59b05e08
JRT
852
853 Fixed several bugs:
854 * 14810: Now you are allowed to create your own 'import' function,
855 since this is frequently done with fancy modules.
856 * 14817: Parens, brackets, and braces are now excluded from
857 'ProhibitNoisyQuotes' since they look better in quotes anyway.
858 * 14787: $1..$9 and '_' are exempt from ProhibitPunctuationVars
859 * 14899: Object methods with the same name as a built-in can
860 be called with parens (ProhibitParensWithBuiltins).
861 * 14901: Normalized the exit status of perlcritic to 0, 1, or 2.
862 See documentation for explanation.
863 * 14855: Partially fixed home directory discovery. Still not
864 completely portable, but at least doesn't create warnings.
865
866 New features:
867 * 14734: Limit for number separators is now configurable
868
869 New Policy modules:
870 * CodeLayout::ProhibitHardTabs
871 * ControlStructures::ProhibitUnlessBlocks
872 * ControlStructures::ProhibitUntilBlocks
873 * ControlStructures::ProhibitCStyleForLoops
874
875 Changed the syntax for the magic comments. Adam had the
876 idea of using a pragma-like notation. I liked it.
877
be8538d2 878[0.08_2] Released 2005-09-27
59b05e08
JRT
879
880 Fixed problems with Perl::Critic::Config that caused File::Spec
881 to emit 'uninitialized value' warnings during the build.
882
883 Added 1 Policy module contributed by Graham TerMarsch
884
885 Switched from File::Spec::Functions to plain File::Spec because
886 I think its usage is more common.
887
888 Removed 'FindBin' from the test files so I can be sure that the
889 right libraries are getting loaded. This means I'll have to
890 use the -l option with C<prove>.
891
892 Edited more POD.
893
894[0.08_01] Not released
895
896 Fixed "ProhibitParensWithBuiltins" to allow parens to be used with
897 object method calls that have the same name as a builtin functions.
898
899 Introduced magical comments that allow developers to configure
900 Perl::Critic on-the-fly from within their code.
901
902 Added META.yml files and POD tests to the build. I did this
903 mostly just to boost the Kwalitee score on CPANTS.
904
905 Switched from "Config::Std" to "Config::Tiny" because it doesn't
906 require those fancy Damian modules that don't seem to work on
907 some older versions of Perl.
908
be8538d2 909[0.07] Released on 2005-09-21
59b05e08
JRT
910
911 Fixed bugs in the ProhibitCascadingIfElse policy.
912
913 Added ProhibitExplicitReturnUndef policy
914
915 Made ProhibitUnpackagedCode configurable so you can exempt scripts,
916 which typically don't have an explicit 'package' statement.
917
918 ProhibitPackageVars policy now exempts vars in ALL_CAPS. This
919 is to permit common package variables like @EXPORT and $VERSION.
920
921 Renamed "ProhibitStringyGrep and "ProhibitStringyMap" because
922 the so-called string form doesn't really exist. Now called
923 "RequireBlockGrep" and "RequireBlockMap"
924
925 Corrected documentation on defining Policy names within the
926 configuration file. This still isn't very clear and needs
927 to be rewritten.
928
929 Perl::Critic now requires PPI version 1.003, which has a few bug
930 fixes of its own.
931
932 Rewrite some code just to make Perl::Critic more self-compliant.
933
934 Added test cases to verify the configuration functionality. These
935 are not completely thorough and need more work.
936
be8538d2 937[0.06] Released on 2005-09-17
59b05e08
JRT
938
939 Now called 'Perl::Critic'.
940
941 Added 4 new policy modules.
942
943 Fixed bugs in build process.
944
945 Added support for Module::Build.
946
be8538d2 947[0.05] Released on 2005-09-17
59b05e08
JRT
948
949 End of 'Perl::Review' releases. I have changed the name to
950 'Perl::Critic' to avoid possible confusion with "The Perl Review"
951 magazine.
952
be8538d2 953[0.04] Released on 2005-09-14
59b05e08
JRT
954
955 Version 0.03 was a bust because I uploaded the wrong tarball to PAUSE.
956
be8538d2 957[0.03] Released on 2005-09-13.
59b05e08
JRT
958
959 Fixed some POD links.
960
961 Removed test cases for missing policy module.
962
be8538d2 963[0.02] Released on 2005-09-13.
59b05e08
JRT
964
965 Major overhaul based on feedback from Perl community.
966
967 Factored coding standards into separate modules (known as
968 Policies). The idea here is to allow other developers to easily
969 contribute additional coding standards.
970
971 Reworked Perl::Review into a simple engine for loading and running
972 Policy modules.
973
974 Gave perlreview a command-line interface and configuration file
975 for selecting which Policy modules to use.
976
be8538d2 977[0.01] Released on 2005-08-16.
59b05e08
JRT
978
979 Initial version.