Login
RT #79289: False Postive in Perl::Critic::Utils::is_in_void_context()
[gknop/Perl-Critic.git] / Changes
1 [X.XXX] Released on XXXX-XX-XX
2
3      Policy Changes:
4      * BuiltinFunctions::ProhibitVoidGrep and ::ProhibitVoidMap: grep
5        and map called as functions are now allowed in slice operations.
6        RT #79289
7        Thanks to Wade at Anomaly dot org for the patch.
8      * Subroutines::RequireArgUnpacking: Most tests of the size of @_
9        are now allowed.  RT #79138
10      Other Changes:
11      * Modernized our usage of Exporter.  See RT #75300.  
12        Thanks to Olivier MenguĂ© for the patch.
13
14 [1.118] Released on 2012-07-10
15
16     Policy Changes:
17     * CodeLayout::RequireTidyCode: Revise to work with incompatible
18       changes in Perl::Tidy 20120619. RT #77977.
19     * TestingAndDebugging::ProhibitNoWarnings: Correct the parse of the
20       'no warnings' statement, so that 'no warnings "qw"' is recognized
21       as supressing just 'qw' warnings. RT #74647.
22     * Miscellanea::RequireRcsKeywords has been moved to the Perl-Critic-More
23       distribution,  RT #69546
24
25     Other Changes:
26     * Make all unescaped literal "{" characters in regexps into
27       character classes. These are deprecated, and became noisy with
28       Perl 5.17.0.  RT #77510.
29
30 [1.117] Released on 2011-12-21
31
32     HAPPY HOLIDAYS!
33
34     New Policies:
35     * Variables::ProhibitAugmentedAssignmentInDeclaration reports
36       constructs like 'my $x += 1'. Contributed by Mike O'Regan
37
38     Policy Changes:
39     * BuiltinFunctions::ProhibitLvalueSubstr: Add explicit 'use version'.
40       RT #68498.
41     * CodeLayout::ProhibitHardTabs: Add 'pbp' to the default_themes list.
42       RT #71093.
43     * ControlStructures::ProhibitMutatingListFunctions now understands that
44       tr///r (introduced in 5.13.7) does not change its operand.
45     * ControlStructures::ProhibitMutatingListFunctions now understands that
46       '//=', '<<=', and '>>=' are assignment operators. RT #70901.
47     * ErrorHandling::RequireCheckingReturnValueOfEval now allows things
48       like grep { eval $_ }. RT #69489.
49     * Modules::RequireExplicitPackage now has configuraion option
50       allow_import_of, to allow the import of specified modules before
51       the package statement. RT #72660.
52     * RegularExpressions::ProhibitEnumeratedClasses no longer thinks
53       that [A-Za-z_] matches \w. RT #69322.
54     * RegularExpressions::ProhibitUnusedCaptures now skips the first
55       block of an 'if' or 'elsif' if the regular expression is bound to
56       its operand with the '!~' operator. RT #69867.
57     * RegularExpressions::ProhibitUnusedCaptures now looks into lists
58       and blocks in the replacement portion of the regular expression if
59       /e is asserted. RT #72086.
60     * RegularExpressions::RequireDotMatchAnything,
61       RegularExpressions::RequireExtendedFormatting and
62       RegularExpressions::RequireLineBoundaryMatching now honor defaults
63       set with 'use re "/modifiers"'. RT #72151.
64     * Subroutines::ProhibitManyArgs now recognizes '+' as a prototype
65       character.
66     * Variables::ProhibitPunctuationVars now recognizes bracketed
67       variables embedded in interpolated strings (e.g. "${$}"). For the
68       purpose of the 'allow' configuration, these are considered
69       equivalent to the unbracketed form. RT #72910.
70     Other Changes:
71     * Corrected POD in Perl::Critic::PPI::Utils. RT #68898.
72     * Perl::Critic::Violation source() method now returns the line
73       containing the violation (not the first line) when the statement
74       containing the violation spans multiple lines.
75
76 [1.116] Released on 2011-05-15
77
78     Policy Changes:
79     * BuiltInFunctions::ProhibitLvalueSubstr does not report violations
80       if the document contains an explicit 'use n.nnn;' where the
81       version is before 5.005.  RT #59112
82     * Documentation::RequirePodSections no longer blows up on code
83       having POD but no =head1. This problem was introduced with RT
84       #59268. RT #67231
85     * RegularExpressions::ProhibitUnusedCapture should more reliably
86       find things like s/(a)/${1}2/.  RT #67273.
87     * ValuesAndExpressions::ProhibitMagicNumbers and
88       Module::RequireVersionVar now treat versions passed as the second
89       argument of a 'package' statement the same as versions declared as
90       'our $VERSION ...'.  RT #67159
91     * Variables::RequireLexicalLoopIterators does not report violations
92       if the document contains an explicit 'use n.nnn;' where the
93       version is before 5.004.  RT #67760
94
95 [1.115] Released on 2011-03-31
96
97     Minor bits:
98     * Fatal error in RegularExpressions::ProhibitUnusedCapture here
99       document check.  RT #67116.
100     * Internal POD error in Documentation::RequirePodLinksIncludeText.  Patch
101       by Salvatore Bonaccorso.  RT #67012
102
103 [1.114] Released on 2011-03-26
104
105     Policy Changes:
106     * Documentation::RequirePodLinksIncludeText now handles nested POD
107       formatting. RT #65569
108     * Clarified relation of severity numbers to names in Perl::Critic
109       POD. RT #66017
110     * Removed caveats from Variables::RequireLocalizedPunctuationVars,
111       no longer necessary with PPI 1.208. RT #65514
112     * Have InputOutput::RequireBriefOpen attempt to expand scope as
113       necessary to deal with the case where the open() and the
114       corresponding close() are not in the same scope. RT #64437
115     * RegularExpressions::ProhibitUnusedCapture now looks inside
116       double-quotish things. RT #38942.
117     * RegularExpressions::ProhibitUnusedCapture now takes logical
118       alternation into account, so that (e.g.)
119           if ( /(a)/ || /(b)/ ) {
120               say $1;
121           }
122       is not a violation. RT #38942.
123     * ValuesAndExpressions::ProhibitCommaSeparatedStatements now
124       recognizes 'return { foo => 1, bar => 2 }' as containing a hash
125       constructor, not a block. This was fixed by PPI 1.215. RT #61301.
126     * ValuesAndExpressions::ProhibitCommaSeparatedStatements now
127       recognizes 'bless { foo => 1, bar => 2 }' as containing a hash
128       constructor, not a block. This was fixed by PPI 1.215. RT #64132.
129
130 [1.113] Released on 2011-02-14
131
132     New Policies:
133     * InputOutput::RequireEncodingWithUTF8Layer recommends
134       ':encoding(utf8)' over ':utf8' in open() and binmode(). It is severity 5
135       because of the bad things that can happen if invalid UTF8 gets loose in
136       your code.
137     * Modules::ProhibitConditionalUseStatements prohibits
138       'use module' inside a conditional, since the statement is executed
139       unconditionally at compile time.  Thanks to Peter Guzis for submitting
140       the policy and tests in RT #59065.
141
142     Policy Changes:
143     * CodeLayout::RequireConsistentNewlines produces multiple undefined
144       value errors when a violation is found. RT #65663
145     * ControlStructures::ProhibitMutatingListFunctions allows s///r,
146       which was introduced in 5.13.2.
147     * ControlStructures::ProhibitPostfixControls now looks for "when".  It is
148       treated in the same way as "if".
149     * Documentation::RequirePodSections now honors '## no critic'
150       annotation anywhere before the '__END__', '__DATA__', or first
151       '=head1', whichever comes first.  The line number of the offending
152       '=head1 NAME' was added to the violation description.  RT #59268.
153     * RegularExpressions::ProhibitUnusedCapture now takes account of the
154       use of $- and $+ (and their English equivalents under 'use
155       English') provided the subscripts are literal integers.
156     * RegularExpressions::ProhibitUnusedCapture now takes account of the
157       use of capture variables in the replacement portion of
158       s/.../.../e.
159     * Subroutines::ProhibitUnusedPrivateSubroutines now looks inside
160       regular expressions.
161     * ValuesAndExpressions::ProhibitMagicNumbers now supports Const::Fast.
162     * ValuesAndExpressions::ProhibitMagicNumbers now has a
163       constant_creator_subroutines parameter to allow the user to
164       configure the names of subroutines that create constants. RT #62562.
165     * ValuesAndExpressions::ProhibitMismatchedOperators didn't handle file
166       test operators properly.  Patch by H.Merijn Brand.  RT #58751
167     * Variables::ProhibitUnusedVariables now looks inside regular
168       expressions.
169     * ValuesAndExpressions::RequireInterpolationOfMetachars now detects
170       and complains about "\b" and "\l" as documented in perlop, and
171       "\1" through "\7", which are not documented there, but were found
172       in toke.c.
173
174     New Developer Features:
175     * uses_module(), namespaces(), and subdocuments_for_namespace() methods on
176       Perl::Critic::Document.
177     * Perl::Critic::Document->new() now accepts a -filename-override argument
178       for setting the filename when the source code comes from something
179       other than an actual file.
180
181     Other Changes:
182     * Test::Perl::Critic::Policy no longer exports by default.
183     * Build phase now requires Test::Deep.
184     * Added example using Try::Tiny to documentation of
185       ErrorHandling::RequireCheckingReturnValueOfEval. Suggested by Andy
186       Lester on the developers mailing list.
187     * In order to get more consistent behavior across all installations of
188       Perl::Critic, IPC::Open2 (which actually is part of core), PPIx::Regexp,
189       Perl::Tidy, Pod::Spell, and Text::ParseWords are no longer optional
190       prerequisites.
191     * Now depends upon PPIx::Utilities v1.1.0.
192
193     Bug Fixes:
194     * Build.PL/Makefile.PL didn't specify a minimum version of version.pm, but
195       TestingAndDebugging::RequireUseStrict did.  RT #58952
196     * Perl::Critic::Annotation needs to look inside the __END__ statement to
197       find the true end of the document, otherwise POD policies may give false
198       positives.  RT #59176
199     * BuiltinFunctions::ProhibitStringyEval no longer dies on eval
200       "#...".  RT #60179
201     * RegularExpressions::ProhibitUnusedCapture now takes account of the
202       %LAST_PAREN_MATCH as well as %+ if English has been loaded.  RT #60002
203     * Subroutines::ProhibitManyArgs now interprets prototype groups (e.g.
204       \[$@%]) as representing a single argument.
205     * Require Exporter version 5.63 (versus version 0) to get sane handling of
206       export tags.  RT# 61071
207     * Prevent Subroutines::ProhibitUnusedPrivateSubroutines from failing
208       on &_subroutine().  RT #61311
209     * Subroutines::ProhibitAmpersandSigils now allows references of the
210       form \( &sub1, &sub2 ).  RT #49609
211
212 [1.112_002] Released on 2011-02-09
213 [1.112_001] Released on 2010-12-14
214
215     Changes summarized into 1.113 above.  For exact details, see Changes on
216     BackPAN.
217
218 [1.111] Released on 2010-12-14
219
220     Bug Fixes:
221     * TestingAndDebugging::ProhibitNoStrict and ProhibitNoWarnings no longer
222       rely on the behavior of all() when the list is empty due to change in
223       List::MoreUtils 0.28.  RT #63816
224
225 [1.110_001] Released on 2010-11-30
226
227     Changes summarized into 1.113 above.  For exact details, see Changes on
228     BackPAN.  (Yes, all of this stuff was not in 1.111.)
229
230 [1.109] Released on 2010-08-29
231
232     Bug Fixes:
233     * ValuesAndExpressions::RequireInterpolationOfMetachars fix due to changes
234       in Email::Address 1.890.  Note that this may find problems in code that
235       it didn't before, e.g. q<'@foo'>.
236
237 [1.108] Released on 2010-06-22
238
239     This is the "Give Shawn Moore what we promised him a year ago and hurry up
240     and get this out before Brad Oaks gives his YAPC::NA talk" release.
241
242     New Policies:
243     * Documentation::RequirePodLinksIncludeText
244     * Subroutines::ProhibitUnusedPrivateSubroutines
245
246     New Features:
247     * There is a new global configuration item, 'program-extensions', which
248       configures Perl::Critic's idea of which file name extensions represent
249       programs.  The desired extensions are specified as a space-separated list,
250       with leading '.' on each if that is desired.  Files whose names end in
251       '.PL' will always be considered programs.  This can be overridden by
252       command option --programs-extensions, which can be specified multiple
253       times.
254     * There is now a perlcritic --allow-unsafe switch.  Without this switch,
255       Perl::Critic will silently refuse to load any Policy that is marked
256       unsafe.  Unsafe Policies are usually ones that may compile or execute
257       untrusted code (see Perl::Critic::DynamicPolicy for an example); Policy
258       authors can mark their policies as unsafe by overriding the is_safe()
259       method.
260     * The framework that we use to test Perl::Critic Policies has been
261       packaged into a convenient module that you can use to test your own
262       Policies.  See Test::Perl::Critic::Policy and Perl::Critic::TestUtils
263       for details.
264
265     Policy Changes
266     * BuiltInFunctions::ProhibitLvalueSubstr no longer complains when there
267       is a low-precedence operator between the substr() and the assignment
268       operator.
269     * CodeLayout::ProhibitParensWithBuiltins now allows 'state ($foo)'.  RT
270       #52029
271     * ErrorHandling::RequireCarping now has an
272       allow_in_main_if_not_in_subroutine option to allow "die" directly in
273       the default namespace.
274     * InputOutput::RequireBriefOpen now recognizes CORE::open(),
275       CORE::close(), CORE::GLOBAL::open(), and CORE::GLOBAL::close().  RT
276       #52391
277     * Modules::ProhibitEvilModules now complains by default about the modules
278       deprecated by the Perl 5 Porters in 5.12.
279     * Modules::RequireVersionVar documentation updated to make clear that "my
280       $VERSION" does not work as a module version declaration.  RT #56667
281     * The RegularExpressions::* policies have been converted from using
282       Regexp::Parser to using PPIx::Regexp for their heavy lifting.
283     * RegularExpressions::ProhibitCaptureWithoutTest now allows capture
284       variables inside when() {}.  RT #36081.
285     * RegularExpressions::ProhibitUnusedCapture now checks for unused named
286       captures.
287     * Subroutines::ProhibitManyArgs revised to count only characters in the
288       prototype that represent arguments.  RT #56627
289     * Subroutines::ProhibitNestedSubs no longer complains about scheduled
290       blocks (BEGIN, etc.) inside subroutines and vice versa.
291     * Subroutines::RequireFinalReturn should now understand a final given/when
292       statement, and declare an error if there is no 'default' block or if any
293       branch does not return.
294     * TestingAndDebugging::RequireUseStrict now accepts 'use 5.011' or greater
295       as equivalent to 'use strict'.
296     * ValuesAndExpressions::ProhibitMismatchedOperators false positive with
297       "'foo' x 15 . 'bar'".  RT #54524
298     * Variables::ProhibitPunctuationVars gave false positives on qr// regexp's
299       ending in '$'.  RT #55604
300
301     Bug Fixes:
302     * The "## no critic" annotations now respect #line directives.
303     * Annotations on statements spanning more than one line (e.g.
304             my $foo =
305                 '$bar'; ## no critic (RequireInterpolationOfMetachars)
306       ) are now handled as single-line annotations, not block annotations.
307     * All instances of L<Foo> in the POD have been changed to L<Foo|Foo>.
308       L</bar> and L<Foo/bar> were allowed to stand.  RT #37485
309     * Spaces are now allowed immediately inside the enclosing parentheses in
310       "## no critic ( Foo )".  RT #52038
311     * With the introduction of PPIx::Regexp, Perl::Critic no longer dies
312       when it encounters a Perl 5.010 regexp.  RT #49442.
313     * DEVELOPER.pod typo in link to
314       ValuesAndExpressions::ProhibitConstantPragma policy. RT #57818
315     * Spelling errors in documentation.  RT #57375
316     * "die" used instead of "croak".  RT #56619
317     * Fixed regex test that caused test failures on every Perl 5.11
318       (credit Tom Wyant).
319     * t/20_policy_pod_spelling.t now works (or at least no longer fails)
320       in non-English locales (again).  RT #43291 and RT #48986.
321     * Perldoc hae broken link for McCabe score definition.  RT #53219
322     * RT #33935 and #49679 were fixed by upgrading to PPI 1.208
323
324     Other Changes:
325     * Perl::Critic::Utils::is_unchecked_call() updated to include chmod in the
326       set of things covered by autodie (this happened in autodie v2.08).  The
327       primary effect of this is on InputOutput::RequireCheckedSyscalls.
328     * Now depends upon Task::Weaken to ensure that we only install with perls
329       where Scalar::Util::weaken() works.
330     * Email::Address was optional, but is now required.  So everyone
331       gets the optimal behavior from RequireInterpolationOfMetachars.
332     * Some infrastructure has been extracted to the new PPIx-Utilities
333       distro.  It is also a required dependency here.  Over time a good
334       portion of Perl::Critic::Utils* will be migrated to this distribution.
335     * Perl::Critic::Utils::PPI::get_constant_name_element_from_declaring_statement()
336       is deprecated because it doesn't handle multiple constants being
337       declared within a single "use constant" statement.  Use
338       PPIx::Utilities::Statement::get_constant_name_elements_from_declaring_statement()
339       instead.
340     * Removed all uses of Perl::Critic::Utils::PPIRegep.  Since the
341       PPIx::Regexp update, Perl::Critic only used get_match_string() and
342       friends, which were superseded by the corresponding PPI methods.
343       Perl::Critic now depends on PPI-1.208 or newer.
344     * Moved Perl::Critic::Utils::PPIRegexp to the Perl-Critic-Deprecated.
345     * The PolicySummary.pod file is now generated when the distribution
346       is created, rather than when you install it.  This ensures the file
347       will be available on http://search.cpan.org.  Thanks to Bear Longyear
348       for bringing this to our attention.
349
350 [1.107_001] Released on 2010-06-20
351
352     Changes summarized into 1.108 above.  For exact details, see Changes on
353     BackPAN.
354
355 [1.106] Released on 2010-05-10
356
357     Bug Fixes:
358     * NamingConventions::Capitalization fix for PPI 1.212.  RT #57348
359
360 [1.105_03] Released on 2010-03-21
361 [1.105_02] Released on 2010-01-23
362 [1.105_01] Released on 2010-01-16
363
364     Changes summarized into 1.108 above.  For exact details, see Changes on
365     BackPAN.
366
367 [1.105] Released on 2009-09-07
368
369     Bug Fixes:
370     * Variables::ProhibitPunctuationVars would complain about "%-" appearing
371       anywhere in a string.  RT #49016
372
373     Policy Changes:
374     * InputOutput::RequireCheckedSyscalls now complains about unchecked "say"
375       by default.  RT #37487
376
377 [1.104] Released on 2009-08-23
378
379     This release is dedicated to Tom Wyant in appreciation of the amount of
380     effort he put into the enhancements and bug fixes in this release, for
381     having the patience to wait for the amount of time that it took to get
382     them out, and for overall awesomeness.  Thank you, Tom.
383
384     New Policies:
385       Objects::ProhibitIndirectSyntax
386       ValuesAndExpressions::ProhibitComplexVersion
387       ValuesAndExpressions::RequireConstantVersion
388
389     New Optional Requirement:
390     * Email::Address, if you want
391       ValuesAndExpressions::ProhibitInterpolationOfLiterals to properly ignore
392       email addresses.
393
394     New Features:
395     * Perlcritic will list the names of files with violations if given the
396       --files-with-violations option, or the names of files without
397       violations if given the --files-without-violations options. These
398       have synonyms -l and -L respectively.
399     * Perlcritic has a new --list-enabled option, which lists the Policies
400       that will be enforced, given the current configuration.  This is
401       useful if you've written a complex command-line or modified your
402       .perlcriticrc file and you want to see which Policies *would*
403       be used with the current configuration, if you were actually going
404       to critque a file with it.
405     * Perl::Critic::Violation now takes #line directives into account in the
406       %F, %f, and %l formats.  You can get the old values via the new %G, %g,
407       and %L formats.
408
409     Policy Changes:
410     * CodeLayout::ProhibitParensWithBuiltins was complaining in certain cases
411       where parentheses are required due to operator precedence.  RT #46862.
412     * ControlStructures::ProhibitMutatingListFunctions no longer complains
413       about uses of tr/// that don't modify the operand.  Reported by EDAVIS,
414       RT #44515.
415     * Miscellanea::RequireRcsKeywords now accepts "qw$Keyword: ...$".  RT
416       #45196.
417     * Modules::RequireFilenameMatchesPackage now respects logical filenames
418       defined by the "#line" directives.  This allows the Policy to work
419       properly with IDEs and code generators.
420     * NamingConventions::Capitalization now allows fully qualified subroutine
421       declarations ( e.g. "sub Foo::Bar::baz {...}" ).  However, the
422       non-package part of the subroutine name must still conform to whatever
423       capitalization rule you have chosen.
424     * RegularExpressions::ProhibitCaptureWithoutTest no longer complains if
425       the regex is followed by an "or die" or similar.  Reported by EDAVIS,
426       RT #36081.
427     * RegularExpressions::ProhibitComplexRegexes no longer counts variable
428       substitutions in the length.   Reported by EDAVIS, RT #36098.
429     * RegularExpressions::ProhibitUnusedCapture now considers the body of
430       while loops and not just their condition.  Reported by EDAVIS, RT
431       #38942.
432     * ValuesAndExpressions::ProhibitVersionStrings was getting confused by
433       comments.  Reported by Kevin Ryde,  RT #44986.
434     * ValuesAndExpressions::RequireInterpolationOfMetachars now allows sigils
435       in the arguments to "use vars".  Contributed by Kevin Ryde, RT #47318.
436     * ValuesAndExpressions::RequireInterpolationOfMetachars now properly
437       ignores email addesses, if you have Email::Address installed.  Inspired
438       by the Kevin Ryde contribution in RT #47318.
439     * Variables::ProhibitPunctuationVars gained the ability to look inside
440       interpolated strings.  Doing this correctly is challenging and things
441       may not work out right; how the policy does this can be controlled via
442       the new "string_mode" option.  Contributed by Edgar Whipple
443       <perlmonk at misterwhipple dot com>.
444     * Variables::ProhibitPunctuationVars now ignores $] by default since there
445       is no English.pm equivalent.
446
447     Other Bug Fixes:
448     * Perl::Critic::Utils::parse_arg_list() was slurping up the "or die ..."
449       portion of "open my $foo, 'somefile' or die ...", causing
450       InputOutput::ProhibitTwoArgOpen to not complain about this example.
451       Reported by Alexandr Ciornii,  RT #44554.
452
453     Minor Changes
454     * The line count emitted by the --statistics option is further broken down
455       by line content.
456
457     Minor Documentation Fixes:
458     * ValuesAndExpressions::ProhibitInterpolationOfLiterals.  Reported by
459       Debian in http://bugs.debian.org/542814,  RT #48936
460
461     Build Fixes:
462     * There wasn't a specific version given for the List::MoreUtils dependency
463       and we're using features that weren't avialable until 0.19.  So, we now
464       require version 0.19.  Noticed by John J. Trammell,  RT #48917.
465     * Some tests were tied to the specific "true" and "false" values that some
466       functions were returning.  Reported by Michael Schwern,  RT #43910.
467
468     Other News:
469     * Komodo version 5.1.1 now has built-in support for Perl-Critic,
470       if you have the Perl::Critic and criticism modules installed.
471       Both should be available through the ActiveState Perl Package
472       Manager ppm(1).
473
474 [1.103] Released on 2009-08-03
475
476     Fix configure_requires prerequisite on Module::Build 0.34_02.
477
478 [1.102] Released on 2009-08-03
479
480     Bug fixes:
481     * Works with PPI 1.205.  Yay for 5.10 support!
482     * Variables::RequireLexicalLoopIterators didn't work correctly on foreach
483       loops with labels.
484
485 [1.101_003] Released on 2009-07-22
486 [1.101_002] Released on 2009-07-21
487 [1.101_001] Released on 2009-07-21
488
489     Changes summarized into 1.102 above.  For exact details, see Changes on
490     BackPAN.
491
492 [1.100] Released on 2009-07-17
493
494     This is a POD fix release to deal with issues identified by Test::POD
495     1.40.  There is no functional difference between this release and 1.098.
496     This is the last release of Perl::Critic that will be compatible with PPI
497     1.203.  PPI's parsing of for(each)? loops is changing in its next release
498     in an incompatible manner and there will be a release in the near future
499     to make Perl::Critic compatible with that change.
500
501 [1.099_002] Released on 2009-06-27
502 [1.099_001] Released on 2009-06-25
503
504     Experimental releases.  For exact details, see Changes on BackPAN.
505
506 [1.098] Released on 2009-03-07
507
508     Some Exciting News:
509     The Perl Development Kit (PDK 8.0) from ActiveState now includes a
510     very slick graphical interface to Perl-Critic.  I highly recommend
511     that you check it out.  Here's a link to screenshots and docs:
512
513     http://docs.activestate.com/pdk/8.0/PerlCritic_gui.html
514
515     New Features:
516     * Violation coloring is now configurable via command line or profile. The
517       profile entries are color-severity-highest, -high, -medium, -low, or
518       -lowest. Numbers are accepted in lieu of named severities (e.g.
519       'color-severity-5' for 'color-severity-highest'), and 'colour' is
520       accepted in lieu of 'color'.
521     * Handling of unrecognized policy configuration items is now controlled by
522       the profile_strictness. The default is to warn about them. The previous
523       default was that they were fatal.
524     * -p is now a synonym for --profile.
525     * The --verbose option for perlcritic now supports a %C format that will
526       displays the class of PPI::Element that caused the violation.
527
528     Policy Changes:
529     * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
530       didn't include "pbp" in its default themes even though it is derived
531       from the book.  Now it does.  :]
532     * ErrorHandling::RequireCarping now allows a here document as the last
533       element if the "allow_messages_ending_with_newlines" option is true.
534     * Fix Subroutines::ProhibitAmpersandSigils so it allows "defined(&x)" as
535       well as "defined &x".  Patch from Kevin Ryde, RT #38855.
536     * Subroutines::ProtectPrivateSubs now has an "allow" option to specify
537       subroutines which are exempt from this policy.  RT #38678.
538       Additionally, a "private_name_regex" option has been added that allows
539       you to specify what a private subrouting name looks like.
540     * Subroutines::RequireArgUnpacking now has an "allow_subscripts" option
541       to allow array slices and elements.  RT #34009.
542     * Subroutines::RequireArgUnpacking now has an "allow_delegation_to" option
543       to allow the usual delegation idiom. Delegation to 'SUPER::' and
544       'NEXT::' are allowed by default.  RT #33839.
545     * Subroutines::RequireArgUnpacking no longer generates a false positive
546       for '$$_[]', which is an obfuscated way of saying '$_->[]'.  RT #37713.
547     * ValuesAndExpressions::ProhibitMagicNumbers now has an
548       allow_to_the_right_of_a_fat_comma option, which defaults to true.  Note
549       that it currently only works /directly/ to the right of a fat comma.
550     * Variables::ProhibitMatchVars had its default themes changed to "core
551       performance pbp", instead of "core bugs pbp" because, while the match
552       variables make regular expressions slow, it doesn't cause them to not
553       work correctly.
554     * Variables::ProhibitPackageVars has had FindBin and Log::Log4perl added
555       to the default exemptions.
556     * Variables::ProhibitReusedNames now has an "allow" option to specify
557       names that can be reused.  It defaults to enabling $self and $class.  RT
558       #42767.
559     * Variables::RequireLocalizedPunctuationVars has a customizable set of
560       exemptions via the "allow" option.
561
562     New Developer Features:
563     * The guts of perlcritic have been moved to Perl::Critic::Command.  You
564       can invoke Perl::Critic::Command::run() to get the equivalent of running
565       the command.  (Note, however, this interface WILL change, so don't count
566       on the current one.)
567     * Modules have had a "INTERFACE SUPPORT" section added which states
568       whether the Perl::Critic developers consider the particular module is
569       public or not.  Any removal of functionality from a public module will
570       go through a deprecation cycle.  Non-public modules may have their
571       interfaces changed without notice.
572     * P::C::Policy now has an is_enabled() method.
573     * P::C::Violation now has an element_class() method.
574
575     Bug Fixes:
576     * CodeLayout::ProhibitTrailingWhitespace didn't notice cases where PPI
577       would produce instances of PPI::Token::Whitespace that contained
578       multiple lines.
579     * Subroutines::ProtectPrivateSubs no longer regards the exportable POSIX
580       subroutines whose names begin with underscore as private.  RT #38678.
581     * Subroutines::RequireArgUnpacking mishandled a complicated sitation with
582       $_ being an array reference.  RT #39601.
583     * Variables::RequireLocalizedPunctuationVars now applies to subscripted
584       names.  RT #29384.
585
586     Internals:
587     * The guts of Build.PL and Makefile.PL have been rearranged.
588
589 [1.097_002] Released on 2009-03-01
590 [1.097_001] Released on 2009-03-01
591
592     Changes summarized into 1.098 above.  For exact details, see Changes on
593     BackPAN.
594
595 [1.096] Released on 2009-02-01
596
597     New Policies:
598     * ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
599
600     Policy Changes:
601     * Documentation::PodSpelling now has a stop_words_file option.
602     * Modules::ProhibitEvilModules now has a modules_file option.
603
604     Bug Fixes:
605     * ErrorHandling::RequireCarping will now allow a literal newline
606       as well as "\n".  Fixed by Kyle Hasselbacher, RT #25046
607     * Fix InputOutput::ProhibitTwoArgOpen so it allows '-|' or '|-' as the
608       second of two arguments.  Patches from Kyle Hasselbacher and Leland
609       Johnson, RT #42384.
610     * InputOutput::RequireBracedFileHandleWithPrint applies to printf as well
611       as print.  Fixed by Kyle Hasselbacher, RT #42537.
612     * TestingAndDebugging::RequireUseStrict and
613       TestingAndDebugging::RequireUseWarnings are no longer fooled by a
614       block-scoped pragma.  RT #42310.
615     * ValuesAndExpressions::RequireInterpolationOfMetachars allows for escaped
616       backslashes.  Fixed by Tom Wyant, RT #38530.
617     * Fix for problem in P::C::Document in dealing with underscores in
618       expressions like "use 5.009_001".  Patch by Kevin Ryde, RT #36570 and
619       #42089.
620     * Fix in extras/perlcritic.el for a radio button.  Patch by Kevin Ryde, RT
621       #42190.
622     * Fix distclean target in Makefile.PL.  Patch by Richard Soderberg,
623       RT #42088.
624     * Fix temporary files not being cleaned up after tests.  Patch by Kyle
625       Hasselbacher, RT #41443.
626     * Deal with changes in Pod::Parser v1.36 in test in t/05_utils_pod.t.
627
628     Documentation improvements contributed by Mark Grimes in response to RT
629     #41942.
630
631 [1.095_001] Released on 2009-01-18
632
633     Changes summarized into 1.096 above.  For exact details, see Changes on
634     BackPAN.
635
636 [1.094001] Released on 2009-01-01
637
638     Bug Fixes:
639     * Tests would fail on systems without Regexp::Parser installed.
640
641 [1.094] Released on 2009-01-01
642
643     Incompatible Changes:
644     * The way that "## no critic" markers was refactored.  As
645       a result, we discovered that the syntax for the markers was pretty
646       vague.  If you didn't do it just right, it would disable all policies,
647       and not just the specific ones that you wanted.  So we've tightened this
648       up a bit.  If you followed the examples that have been in the docs for
649       the last couple years, then you should be fine.  But if you've been
650       using certain other variations in your "## no critic" markers, then you
651       might suddenly find yourself violating the new
652       ProhibtUnrestrictedNoCritic policy.  To fix this, just make sure your
653       Policy names appear in parentheses:
654
655         ## no critic Foo, Bar, Baz     # wrong!
656         ## no critic Foo Bar Baz       # wrong!
657
658
659         ## no critic (Foo, Bar, Baz)   # ok!
660         ## no critic qw(Foo Bar Baz)   # also ok!
661
662     * The deprecated $FORMAT variables for Perl::Critic::Policy and
663       Perl::Critic::Violation no longer exist.  Use the corresponding
664       get_format() and set_format() functions instead.
665
666     New Policies:
667     * Miscellanea::ProhibitUnrestrictedNoCritic
668     * Miscellanea::ProhibitUselessNoCritic
669     * NamingConventions::Capitalization
670     * Subroutines::ProhibitReturnSort
671     * Variables::ProhibitReusedNames
672
673     Removed Policies:
674     * NamingConventions::ProhibitMixedCaseSubs and
675       NamingConventions::ProhibitMixedCaseVars have been moved to a separate
676       Perl-Critic-Deprecated distribution.  The
677       NamingConventions::Capitalization policy does everything they do, plus
678       more.
679
680     Policy Changes:
681     * BuiltinFunctions::ProhibitStringyEval now has an allow_includes option
682       that makes it behave (mostly) like Ricardo SIGNES'
683       Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire.
684     * InputOutput::RequireCheckedClose, InputOutput::RequireCheckedOpen, and
685       InputOutput::RequireCheckedSyscalls now all support autodie.
686       Unfortunately, autodie is currently treated like a module and not a
687       pragma, which means that the lexical scoping is not taken into account.
688     * InputOutput::RequireCheckedSyscalls now has an exclude_functions
689       parameter.
690     * Modules::ProhibitEvilModules now allows you to specify what the
691       description of a use of a bad module should be, to, say, suggest that
692       people use autodie instead of Fatal.
693     * Subroutine::ProhibitExcessComplexity violation descriptions now include
694       the name of the subroutine, thanks to Andreas Koenig, RT #40070.
695     * TestingAndDebugging::RequireUseStrict and
696       TestingAndDebugging::RequireUseWarnings now have equivalent_modules
697       parameters that allow you to designate other modules as being equivalent
698       to the strict and warnings pragmata.  This one is for all you Moose fans
699       out there.  :]
700
701     Bug Fixes:
702     * ControlStructures::ProhibitUnreachableCode would treat package
703       statements as unreachable.  Fixed by Kevin Ryde.  RT #41734
704     * Fix warning from InputOutput::ProhibitOneArgSelect when select was
705       called with no arguments.  RT #41926
706     * Miscellanea::RequireRcsKeywords couldn't find keywords after __END__
707       that didn't look like part of POD.
708     * Modules::RequireFilenameMatchesPackage would incorrectly complain about
709       programs.  Yet more greatness contributed by Schwern.  RT #39024.
710     * If a perlcriticrc file referred to a policy that wasn't installed and
711       the profile-strictness option was set to "fatal",
712       Perl::Critic::PolicyFactory fell over instead of reporting the
713       problematic policy name.
714
715     Miscellanea:
716     * Perl::Critic::Violation will automatically strip trailing periods
717       from your Policy description and explanation strings.  This ensures that
718       the punctuation is consistent with the format specified by the user via
719       the -verbose formatting options.
720
721     New Developer Features:
722     * Perl::Critic::Policy::prepare_to_scan_document() is now checked and a
723       Policy can disable itself for just a single document, which can speed
724       things up.
725
726 [1.093_03] Released on 2008-12-11
727 [1.093_02] Released on 2008-10-30
728 [1.093_01] Released on 2008-09-07
729
730     Changes summarized into 1.094 above.  For exact details, see Changes in
731     1.093_003 on BackPAN.
732
733 [1.092] Released on 2008-09-02
734
735     Bug Fixes:
736     * Fixed POD errors that were causing build failures.  Sorry
737       about that.
738
739 [1.091] Released on 2008-09-01
740
741     New Policies:
742     * RegularExpressions::RequireDotMatchAnything
743
744     New Features:
745     * perlcritic now supports a -pager option, so you can more easily
746       send the output to your favorite pager.  You can set this option
747       on the command-line or in your .perlcriticrc file.  See the
748       perlcritic perldoc for more details.  Credit to Michael Schwern.
749     * The output from "perlcritic -doc PATTERN" will be automatically
750       sent to your pager if you have set the -pager option.
751
752     Policy Changes:
753     * CodeLayout::ProhibitQuotedWordLists no longer applies if the list
754       contains any non-words, by default.  A non-word is anything that does
755       not match /[\w-]+/.  You can restore the former behavior by setting the
756       "strict" option.  RT #37886.
757     * CodeLayout::ProhibitQuotedWordLists also now applies to the import
758       arguments of a C<use> statement.  RT #24467.
759     * ErrorHandling::RequireCheckingReturnValueOfEval now recognizes ternary
760       left-sides as valid checks.
761     * RegularExpressions::RequireExtendedFormatting gains a
762       minimum_regex_length_to_complain_about option.  Also, regexes that
763       contain only word and whitespace characters are now exempt from this
764       policy, by default; you can make it complain about them by turning on
765       the new strict option.  Contributed by Michael Schwern.  RT #38531.
766     * TestingAndDebugging::ProhibitNoWarnings now supports a
767       allow_with_category_restriction option, thanks to Michael Schwern.
768       RT #38514.
769     * CodeLayout::ProhibitHardTabs now allows leading tabs in qw() word lists
770       and regexes with the /x modifier.  You can still configure this
771       policy to forbid all hard tabs, if you like.  RT #32440
772
773     Bug Fixes:
774     * perlcritic should now work under PAR.  RT #38380.
775     * URL for our repository in META.yml now works for anonymous
776       checkout.  The password is "" (empty).  RT #38628.
777     * color for high-severity violations is now magenta because
778       it is more redable than yellow on white backgrounds.  RT #38511.
779
780 [1.090] Released on 2008-07-22
781
782     Bug Fixes:
783     * Test was incorrectly failing when Regexp::Parser wasn't installed.
784
785 [1.089] Released on 2008-07-21
786
787     Minor Enhancements:
788     * -s is now a synonym for --single-policy.
789
790     Policy Changes:
791     * Subroutines::ProhibitBuiltinHomonyms now also prohibits subroutines
792       with the same name as a Perl keyword (e.g. if, foreach, while).
793       Inspired by RT #37632.
794     * Subroutines::ProtectPrivateSubs now allows expressions like
795       "shift->_some_private_method();".  Note that this *only* applies
796       to the "shift" function -- a private method call on the right of any
797       other bareword still causes a violation.  RT #34713.
798     * Subroutines::RequireFinalReturn now includes exec in the set of things
799       that mark a successful return.  RT #37672
800     * ValuesAndExpressions::ProhibitInterpolationOfLiterals now takes a
801       allow_if_string_contains_single_quote option.  Contributed by Ed
802       Avis <ed@membled.com>.  RT #36125.
803     * ValuesAndExpressions::RequireInterpolationOfMetachars now supports a
804       rcs_keywords option to allow for the common case where those require
805       dollar signs.
806
807     Bug Fixes:
808     * BuiltinFunctions::ProhibitSleepViaSelect would complain if there were
809       three undefs as arguments to select(), but one of them was the timeout.
810       RT #37416.
811     * Reduced false positives in
812       RegularExpressions::ProhibitSingleCharAlternation.  Thanks to
813       Andy Lester and Elliot Shank test cases.
814     * RegularExpressions::ProhibitUnusedCapture would complain if there were
815       multiple captures used in a substitution, e.g. s/(.)(.)/$2$1/.
816     * Subroutines::ProhibitAmpersandSigils no longer complains about
817       "sort &foo(...)".
818     * Makefile.PL, Build.PL and other ".PL" scripts which typically do not
819       have a shebang are no longer mistaken as modules.  This prevents
820       spurious warnings from Modules::RequireEndWithOne.  RT #20481.
821
822     Internals:
823     * Tests are now self compliant.
824
825 [1.088] Released on 2008-07-04
826
827     New Policies
828     * ErrorHandling::RequireCheckingReturnValueOfEval
829
830     Policy Changes:
831     * ValuesAndExpressions::ProhibitLeadingZeros now accepts octal numbers
832       for the Unix permissions argument to chmod, dbmopen, mkdir, sysopen, or
833       umask, by default.  Use the "strict" option to get the old behavior.
834       RT #31977.
835     * Due to the consensus at YAPC::NA 2008,
836       Variables::ProhibitUnusedVariables default severity has been raised to
837       medium/3.
838
839     Minor Changes:
840     * The perlcritic "--Version" option is now "--version" in order to act
841       like the rest of the world.
842
843 [1.087] Released on 2008-06-21
844
845     Policy Changes:
846     * CodeLayout::ProhibitParensWithBuiltins no longer complains about
847       sort(foo(@x)).
848     * TestingAndDebugging::RequireUseWarnings will not complain about files
849       that contain a "use 5.005" statement or similar for perls prior to 5.6.
850       Lesson of the day: computer conferences where you can meet in the real
851       world can clarify conversations greatly.  Good to finally meet you Adam.
852     * InputOutput::ProhibitTwoArgOpen similarly will not complain if there's
853       a "use/require 5.005" statement in the file.  RT #34385.
854
855     Bug fixes:
856     * Perl::Critic can now critique a file named "0".  However, PPI will give
857       a parse error until the next version comes out.  Fixes RT #36127.
858     * Moved detection of the lack of any enabled Policies from P::C::Config
859       to Perl::Critic.  This was causing the perlcritic.t in Parrot to fail.
860       Note, however, there are plans afoot to change how Perl::Critic is
861       configured and things that depend upon that may break.  Please contact
862       users@perlcritic.tigris.org and tell us how you're using P::C::Config
863       directly so that we can take your needs into account.
864
865 [1.086] Released on 2008-06-12
866
867     Policy Changes:
868     * NamingConventions::ProhibitAmbiguousNames now specifies the name that
869       it had problems with in its violation descriptions.
870
871     Bug fixes:
872     * The color option wasn't being correctly set from a .perlcriticrc.
873       RT #36569.
874
875     Minor changes:
876     * --colour is now a synonym for --color.
877
878 [1.085] Released on 2008-06-07
879
880     New Policies:
881     * Documentation::RequirePackageMatchesPodName
882
883     Policy Changes:
884     * Variables::ProhibitUnusedVariables detects a few more cases.  It's
885       still very limited, though.
886
887     Bug fixes:
888     * ControlStructures::ProhibitUnreachableCode didn't notice "until" was an
889       conditional expression.
890
891     Minor documentation updates.
892
893 [1.084] Released on 2008-05-24
894
895     New Features:
896     * perlcritic now supports a --list-themes option.
897     * You can specify the maximum number of violations you want per Policy
898       per document.  Developers can give a default value for this for a
899       Policy by overriding default_maximum_violations_per_document().
900       See RequireUseStrict and ProhibitMagicNumbers for examples.
901
902     Policy Moved:
903     * The ValuesAndExpressions::ProhibitMagicNumbers policy has been moved
904       from Perl::Critic::More into the primary Perl::Critic distribution.
905
906     New Policies:
907     * Variables::ProhibitUnusedVariables (very dumb, limited initial
908       implementation.)
909     * ControlStructures::ProhibitLabelsWithSpecialBlockNames
910       Contributed by Mike O'Regan.  Kickin' ass, Mike.
911
912     Policy Changes:
913     * ControlStructures::ProhibitUnreachableCode now handles the perl 5.10
914       "//" and "err" operators.  RT #36080
915     * InputOutput::RequireBriefOpen now ignores opens of STDIN, STDOUT,
916       and STDERR.  You're generally trying to make long-lasting global
917       effects when manipulating these.  (RT #35774)
918     * RegularExpressions::ProhibitUnusualDelimiters now supports an
919       "allow_all_brackets" option.
920     * RegularExpressions::RequireBracesForMultiline now supports an
921       "allow_all_brackets" option.
922     * TestingAndDebugging::RequireUseStrict now accepts "use Moose::Role"
923       as equivalent to "use strict".  (RT #34838)
924     * TestingAndDebugging::RequireUseWarnings now accepts "use Moose::Role"
925       as equivalent to "use warnings".  (RT #34838)
926     * ValuesAndExpressions::ProhibitMagicNumbers now accepts constant
927       subroutines.
928     * Variables::ProhibitMatchVars no longer detects "use English;".
929       This problem is detected in a more clear way by
930       Modules::RequireNoMatchVarsWithUseEnglish.
931     * Variables::ProhibitPerl4PackageNames no longer complains about
932       $'/$POSTMATCH.  RT #36059
933     * Variables::RequireLocalizedPunctuationVars now allows the use of "my".
934       RT #33937
935
936     Bug Fixes:
937     * No longer falls over if a single file has a parse error.
938
939     New Developer Features:
940     * If a document specifies a minimum perl version, e.g. "use 5.008003",
941       P::C::Document::highest_explicit_perl_version() will tell you what it
942       is.
943     * The parameter to P::C::Policy::initialize_if_enabled is now a
944       P::C::PolicyConfig object instead of a hash reference.
945
946     Minor Changes:
947     * LOTS of documentation updates.
948     * A few more statistics are emitted by perlcritic with the --statistics
949       option.
950     * perlcritic --profile-proto now includes policy abstracts in its
951       output.
952
953     Prerequisites:
954     * Now depends upon PPI 1.203.
955     * New dependency upon version.
956
957 [1.083_006] Released on 2008-05-20
958 [1.083_005] Released on 2008-05-19
959 [1.083_004] Released on 2008-05-18
960 [1.083_003] Released on 2008-05-17
961 [1.083_002] Released on 2008-05-17
962 [1.083_001] Released on 2008-04-13
963
964     Changes summarized into 1.084 above.  For exact details, see Changes in
965     1.083_006 on BackPAN.
966
967 [1.082] Released on 2008-03-08
968
969     New Features:
970     * A new metadata system for defining policy parameters/options has been
971       added.  This makes the life of policy authors easier because
972       configuration validation and parsing can be taken care of
973       automatically, in most cases.  This allows greater integration with
974       IDEs and allows the perlcritic "--profile-proto" option to produce
975       better output.
976
977       Note: This change does NOT REQUIRE ANY CHANGES to policies outside of
978       this distribution; they should continue to work as is.  However, use
979       of this facility can reduce the size of your code and provide the
980       means for tools to discover more about your policy.  If this change
981       does break any of your policies, please let us know.
982
983       To learn how to take advantage of this facility, read
984       Perl::Critic::DEVELOPER and look at the source of any of the
985       configurable policies included in this distribution.
986
987       There is a discussion of the design considerations for this facility in
988       the source repository under doc/PolicyParameter_Notes.pod.
989
990     * Added support for "criticism-fatal" option in your perlcriticrc
991       file.  This will be used by the criticism pragma to cause execution
992       to abort if the file contains any violations.
993
994     New Policy:
995     * Module::RequireNoMatchVarsWithUseEnglish
996
997     Policy Changes:
998     * Added an allow_last_statement_to_be_comma_separated_in_map_and_grep
999       option to ValuesAndExpressions::ProhibitCommaSeparatedStatements.
1000       Partial response to http://rt.cpan.org/Public/Bug/Display.html?id=27654.
1001     * ControlStructures::ProhibitPostfixControls gains the ability to have
1002       the flow control statements allowed to be modified.  This in response
1003       to RT #29540.
1004     * TestingAndDebugging::RequireUseStrict now accepts "use Moose" as
1005       equivalent to "use strict".
1006     * TestingAndDebugging::RequireUseWarnings now accepts "use Moose" as
1007       equivalent to "use warnings".
1008
1009     Bug Fixes:
1010     * RT #31281 perlcritic doesn't recognize "#!/bin/env perl" shebang
1011     * Replace usage of Unicode property escapes with POSIX character classes
1012       order to restore 5.6 compatability.
1013     * RT #30388 ValuesAndExpressions::ProhibitVersionStrings complained
1014       about numbered directories in "use lib".
1015     * Fixed handling of badly behaved spelling programs in PodSpelling.
1016
1017 [1.081_006] Released on 2008-03-02
1018 [1.081_005] Released on 2007-12-29
1019 [1.081_004] Released on 2007-12-20
1020 [1.081_003] Released on 2007-12-16
1021 [1.081_002] Released on 2007-12-16
1022 [1.081_001] Released on 2007-12-15
1023
1024     Changes summarized into 1.082 above.  For exact details, see Changes in
1025     1.081_006 on BackPAN.
1026
1027 [1.080] Released on 2007-11-11
1028
1029     New Features:
1030     * Allow a "## no critic" statement after a shebang on line 1 of a
1031       file.  This allows users to block violations that apply to
1032       whole files and still allow shebangs.
1033
1034     New Policies: (funded by a Perl Foundation grant)
1035     * InputOutput::ProhibitExplicitStdin
1036     * RegularExpressions::ProhibitFixedStringMatches
1037     * RegularExpressions::RequireBracesForMultiline
1038     * RegularExpressions::ProhibitUnusualDelimiters
1039     * RegularExpressions::ProhibitUnusedCapture
1040     * RegularExpressions::ProhibitComplexRegexes
1041     * RegularExpressions::ProhibitSingleCharAlternation
1042     * RegularExpressions::ProhibitEscapedMetacharacters
1043     * RegularExpressions::ProhibitEnumeratedClasses
1044     * InputOutput::RequireBriefOpen
1045     * InputOutput::RequireCheckedSyscalls
1046
1047     Other New Policies
1048     * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
1049
1050     Policy Changes:
1051     * Variables::ProhibitConditionalDeclarations now permits you to local-ize
1052       variables in conditional declarations.  This makes sense, since
1053       C<local> is actually a variable modifier, rather than a declaration.
1054       Thanks to David Golden for reporting this.
1055
1056     New Developer Features:
1057     * Perl::Critic::Utils::PPIRegexp encapsulates interaction with
1058       the PPI Regexp token classes.  Those classes have very sparse
1059       APIs, so this package hides away the ugly fiddling with PPI
1060       internals.
1061     * Added a new optional_modules parameter for the .run syntax.
1062
1063     Bug fixes:
1064     * PPI::Structure::List can now contain multiple children,
1065       so P::C::Utils::parse_arg_list() needs to handle it.
1066
1067       This was done in the process of fixing
1068       http://rt.cpan.org/Ticket/Display.html?id=24924, which was a problem
1069       with TestingAndDebugging::RequireTestLabels.
1070
1071     * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls wasn't resetting
1072       chain length when it ran into the end of a sub-expression.
1073
1074       http://rt.cpan.org/Public/Bug/Display.html?id=30040
1075
1076     * ValuesAndExpressions::ProhibitCommaSeparatedStatements was reporting
1077       false positives when builtins which accept both no and multiple
1078       arguments were involved.
1079
1080       http://rt.cpan.org/Public/Bug/Display.html?id=27654
1081
1082     Internals:
1083     * Removed all use of Carp in favor of exceptions.
1084
1085     Prerequisites:
1086     * Now requires PPI 1.201.  A number of workarounds for PPI bugs have been
1087       removed.
1088     * New dependency upon Exception::Class.
1089
1090     Installation:
1091     * Use Devel::CheckOS to see whether Perl::Critic is being installed on
1092       a Solaris system and warn about tar(1) chopping file names off if it
1093       is.
1094
1095 [1.079_003]  Released on 2007-10-22
1096 [1.079_002]  Released on 2007-10-21
1097 [1.079_001]  Released on 2007-10-09
1098
1099     Changes summarized into 1.080 above.  For exact details, see Changes in
1100     1.079_003 on BackPAN.
1101
1102 [1.078]  Released on 2007-09-19
1103
1104     Restore Perl::Critic::TestUtils::should_skip_author_tests() and
1105     get_author_test_skip_message().  Some Perl::Critic add-on distributions
1106     are using them.
1107
1108 [1.077]  Released on 2007-09-15
1109
1110     Note: if you don't have any problems installing Perl::Critic 1.076, there
1111     is no need to upgrade to this version.  There are no functionality
1112     changes.  This release only contains changes related to installation that
1113     a few people were experiencing.
1114
1115     Minor changes:
1116     * Removed build-time use of Readonly, again, due to problems some people
1117       were having when trying to compile the code by hand, rather than using
1118       CPAN(PLUS)?.
1119     * Don't run author tests if there's a .svn directory present because
1120       users who grabbed the code from the source repository were executing
1121       them and getting failures.
1122     * Don't generate optional, module-hiding test wrappers if author tests
1123       are not enabled.
1124
1125
1126 [1.076]  Released on 2007-09-07
1127
1128     It appears from reports on the 1.075_001 release that the subroutine
1129     sigils were indeed the problem.  Release to the general populace.
1130
1131
1132 [1.075_001]  Released on 2007-09-06
1133
1134     Bug Fixes:
1135     Undo the changes in 1.073 and 1.074.  Instead, stop using the subroutine
1136     sigil in import and export lists.  It is suspected that the problem lies
1137     with Exporter stripping off ampersands.
1138
1139 [1.074]  Released on 2007-09-04
1140
1141     Bug Fixes:
1142     Repeat the Makefile.PL change on
1143     t/generate_without_optional_dependencies_wrappers.PL.
1144     I love CPAN Testers.
1145
1146 [1.073]  Released on 2007-09-04
1147
1148     Bug Fixes:
1149     Work around problems with the combination of Exporter & Readonly in
1150     Makefile.PL on some machines.
1151
1152 [1.072]  Released on 2007-09-03
1153
1154     Bug Fixes:
1155     * The Makefile generated by Makefile.PL was not syntactically correct
1156       according to some versions of Solaris.  Thanks to Diab Jerius
1157       (DJERIUS) for discovery and testing.
1158     * Fixed mis-definition of "quiet" value for the "--profile-strictness"
1159       option.
1160     * Enhanced testing with the absence of optional modules.
1161
1162 [1.071]  Released on 2007-08-24
1163
1164     The "Brown Paper Bag" Release
1165
1166     Bug Fixes:
1167     * Tests would not pass in environments that did not have all optional
1168       dependencies installed.
1169
1170 [1.07]  Released on 2007-08-21
1171
1172     New Policies: (funded by a Perl Foundation grant)
1173     * BuiltinFunctions::ProhibitBooleanGrep
1174     * BuiltinFunctions::ProhibitComplexMappings
1175     * Documentation::PodSpelling
1176     * InputOutput::ProhibitJoinedReadline
1177     * Subroutines::ProhibitManyArgs
1178     * Subroutines::RequireArgUnpacking
1179     * ValuesAndExpressions::ProhibitImplicitNewlines
1180     * Variables::RequireLocalizedPunctuationVars
1181
1182     Other New Policies
1183     * Subroutines::ProhibitNestedSubs
1184
1185     New Features:
1186     * The "perlcritic --profile-proto" output now includes the "add_themes"
1187       parameter for each policy.
1188     * The perlcritic "--strict-profile" option has been replaced with a
1189       "--profile-strictness" option.  This new option takes values of "warn"
1190       (the default), "fatal", and "quiet", which controls what happens with
1191       ignorable problems in a .perlcriticrc file.
1192
1193     New Developer Features:
1194     * Perl::Critic::Policy now has an overridable initialize_if_enabled()
1195       method which allows a Policy to perform expensive initialization after
1196       it has been determined whether the user has it enabled or not.  Also,
1197       this method allows a Policy to say that it should be disabled
1198       regardless of what the user says.
1199
1200       Actually, use of this method is now encouraged over using a
1201       constructor.
1202
1203     Other Stuff:
1204     * Now requires the Readonly module in order to be more self-compliant.
1205
1206 [1.061]  Released on 2007-07-24
1207
1208     Bug Fixes:
1209     * Fix P::C::Theme-- Exporter in Perl 5.6 does not export import(), so you
1210       must subclass it.  *sigh*
1211     * Fix P::C::Config::_validate_and_save_theme()-- eval of an empty string
1212       does not reset $@/$EVAL_ERROR in Perl 5.6.
1213
1214     Big thanks to Anirvan Chatterjee for identifying and helping debug these
1215     issues.
1216
1217 [1.06]  Released on 2007-06-27
1218
1219     New Features:
1220     * perlcritic now emits errors for all the problems it can find for the
1221       global options in the command-line parameters and .perlcriticrc file,
1222       rather than bailing on the first one it encounters.
1223
1224     * perlcritic now has a "--strict-profile" option which will make warnings
1225       about problems in a profile fatal.
1226
1227     * perlcritic now has a "--statistics-only" option which suppresses the
1228       display of individual violations and only shows the additional output
1229       produced by the "--statistics" option.
1230
1231     Feature requests:
1232     * A value for "color" can now be specified in a .perlcriticrc.
1233       http://rt.cpan.org/Ticket/Display.html?id=24877
1234
1235     New Policies:
1236     * ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
1237       As suggested in http://rt.cpan.org/Ticket/Display.html?id=23290.
1238     * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
1239     * Modules::ProhibitExcessMainComplexity
1240       As suggested in http://rt.cpan.org/Ticket/Display.html?id=24699
1241
1242     Minor changes:
1243     * The perlcritic "--profile-proto" option now emits the short names for
1244       policies, rather than the full ones.
1245
1246     * The "-profileproto" and "-singlepolicy" options have been renamed to
1247       "-profile-proto" and "-single-policy" in order to make the growing
1248       number of command-line options comprehensible.  The change of
1249       "singlepolicy" also affects your F<.perlcriticrc> file.
1250
1251 [1.053]  Released on 2007-06-02
1252
1253     *DEVELOPMENT RELEASE*
1254
1255     Bug Fixes:
1256     Fixed bug in 15_statustics.t test script, which caused the build
1257     to fail on machines that don't have Perl::Tidy installed.
1258
1259 [1.052]  Released on 2007-06-01
1260
1261     *DEVELOPMENT RELEASE*
1262
1263     New Features:
1264     * perlcritic now emits a summary about the scanned code when enabled by
1265       the "-statistics" option.
1266
1267     Policy Enhancements:
1268     * InputOutput::ProhibitBacktickOperators can now be configured to only
1269       check in void contexts.
1270
1271     Bug Fixes:
1272     * 27073: False positive in RequireUpperCaseHeredocTerminator
1273     * 27065: CodeLayout::ProhibitTrailingWhitespace breaks under Perl 5.6.1
1274     * 26462: ControlStructures::ProhibitCascadingIfElse pod typo
1275     * ValuesAndExpressions::ProhibitCommaSeparatedStatements was complaining
1276       about multiple values in the list to be iterated over by a foreach loop.
1277     * Corrected PBP page numbers for some policies (Quinn Weaver).
1278
1279 [1.051]  Released on 2007-04-12
1280
1281     *DEVELOPMENT RELEASE*
1282
1283     No new policies.
1284     No particular bug fixes.
1285
1286     Internals:
1287     * Added several new utility functions to support the StricterSubs distro.
1288       Also, some of the existing functions in Perl-Critic-Utils have
1289       changed in ways that might break your custom policies.
1290
1291     Miscellanea:
1292     * Updated Emacs plugin (Courtesy Josh ben Jore).
1293       See extras/perlcritic.el for details.
1294     * Added copy of BBEdit plugin (Courtesy of Josh Clark).
1295       See extras/perl_critic_for_bbedit-1_0.zip for details
1296
1297 [1.05]  Released on 2007-03-19
1298
1299     Bug Fixes:
1300     * 25557: t/20_policy_prohibittrailingwhitespace.t fails on Perl 5.8.0
1301
1302 [1.04]  Released on 2007-03-18
1303
1304     Bug Fixes:
1305     * 25008: Subroutines::RequireFinalReturn should allow "throw"
1306     * 25085: False Positive - Heredoc terminator must be quoted
1307     * 18423: VERSION check does not notice Readonly::Scalar version
1308     * 25449: Proposal of $VERSION declaration (DUPLICATE)
1309
1310     New Policies:
1311     * CodeLayout::ProhibitTrailingWhitespace
1312     * ValuesAndExpressions::ProhibitCommaSeparatedStatements
1313     * Variables::ProhibitPerl4PackageNames
1314
1315     Policy Enhancements:
1316     * Subroutines::RequireFinalReturn can now be configured to recognize
1317       your custom functions that behave like "die" or "exit".
1318     * Documentation::RequirePodSections can be configured to match
1319       Module::Starter:PBP or to really match the PBP book.
1320
1321 [1.03]  Released on 2007-02-13
1322
1323     Bug Fixes:
1324     * Fixed a few more problems with the %f, %F, and %r format escapes.
1325     * I forgot to put Conway's perlcriticrc file in the MANIFEST. Sorry.
1326
1327     Interface Changes:
1328     * Perl::Critic::Utils automatically exports everything.  However,
1329       this is deprecated.  In the future, you must request your exports.
1330
1331     Policy Changes:
1332     * Duplicate violations of RequireExcplicitPackage are now squelched,
1333       in the same way as RequireUseStrict and RequireUseWarnings.
1334
1335 [1.02]  Released on 2007-02-11
1336
1337     Bug Fixes:
1338     * "undef" incorrectly triggered ProhibitMutatingListFunctions.
1339     * 24876: %f and %F escapes not working in custom "verbose" format strings.
1340     * 24875: Documentation bug in TestingAndDebugging::ProhibitNoStrict
1341
1342     New Policies:
1343     * InputOutput::RequireCheckedOpen
1344     * InputOutput::RequireCheckedClose
1345
1346     Other Cool Stuff:
1347     * Added Conway's own suggested Perl::Critic configuration as
1348       examples/perlcriticrc-conway.
1349
1350     * See the examples/ directory for some neat demonstrations of using
1351       the Perl::Critic API. Contributed by Elliot Shank.
1352
1353     Interface Changes:
1354     * Perl::Critic::Utils no longer exports anything by default.  Policies
1355       outside the distribution will need to specify what exactly they need
1356       from this module.  There are a number of tags that can be used in
1357       addition to individual imports.
1358
1359 [1.01]  Released on 2007-01-24
1360
1361     PRODUCTION RELEASE:  You may now consider the public Perl::Critic
1362     API as "stable."  Future minor releases will focus on bug fixes,
1363     new policies, and internal refactoring.
1364
1365     Bug Fixes:
1366     * Fixed memory leak.  This was reported by the Parrot team at
1367       http://rt.perl.org/rt3/Ticket/Display.html?id=41230
1368
1369 [0.23]  Released on 2007-01-19
1370
1371     Bug Fixes:
1372     * 23994: Test 56 in t/05_utils.t of Perl::Critic v0.22 fails
1373     * 24005: test 95 in t/13_bundled_policies fails in 0.22
1374
1375
1376     Groovy New Features:
1377     * Added '%F' to the Violation format specifications.  This will
1378       give you just the name of file where the violation occurred
1379       (i.e. without the path).
1380
1381     * Improved validation of .perlcriticrc file.  An invalid
1382       default setting will now cause a fatal exception. A
1383       strange-looking policy name will cause a warning.
1384
1385
1386     Interface Changes:
1387     * The syntax for theme expressions has changed.  Instead of using
1388       mathematical operators qw(+ * -) you must now use the logical
1389       operators qw(|| && !).  See the Perl::Critic docs for more info.
1390
1391     * The @GLOBALS and @BUILTINS variables are no longer exported by
1392       Perl::Critic::Utils.  Use the is_perl_global() and is_perl_builtin()
1393       functions instead.
1394
1395     * Perl::Critic::Policy::policy_parameters() has bee renamed to
1396       Perl::Critic::Policy::supported_paramters().  This was an
1397       undocumented feature anyway, so it shouldn't affect anyone.
1398
1399
1400     Other Internal Changes:
1401     * Perl::Critic now requires B::Keywords v1.05 or newer.
1402
1403     * A few internal classes have been refactored.  As a result,
1404       Set::Scalar is no longer a required dependency.
1405
1406
1407 [0.22]  Released on 2006-12-15
1408
1409     New Features:
1410     * Introduced named severity levels: gentle, stern, harsh, cruel, brutal
1411       You can use these named levels instead of the numeric ones.
1412       For example: "perlcritic --severity=cruel MyModule.pm"
1413       Or just:     "perlcritic --cruel MyModule.pm"
1414
1415     * For perlcritic, the "-List" option has been renamed to
1416       "-profileproto".  The output now includes the names of the
1417       parameters that each Policy supports, if any.
1418
1419     * Improved validation of Policy parameters in your F<.perlcriticrc>
1420       Any invalid parameter now causes a fatal exception.
1421
1422     Major Changes:
1423     * Reassigned themes for most policies.  Now there are fewer
1424       themes and they are organized around programming concepts
1425       instead of severity levels.  If you have assigned your own
1426       themes to any Policies, they should still work as expected.
1427
1428     Policy Changes:
1429     * ErrorHandling::RequireCarping will not complain if it can figure
1430       out that the die or warn message will always end in a newline
1431       ("\n").  The idea is that, if you put the newline there, you
1432       don't indend for there to be any file/line/stack information
1433       emitted, in which case you really don't want carp/croak.
1434
1435       You can restore the old strict behavior by giving the policy
1436       a false value for "allow_messages_ending_with_newlines" in your
1437       configuration.
1438
1439     Misc Changes:
1440
1441     Added single-letter uppercase alternatives for some perlcritic options.
1442
1443 [0.21_01] Released on 2006-12-03
1444
1445     New Policies:
1446     * TestingAndDebugging::ProhibitProlongedStrictureOverride
1447     * ControlStructures::ProhibitMutatingListFunctions
1448
1449     New Features:
1450     * Say "perlcritic -List" to get an expanded listing of all Policies.
1451       The format is suitable for use as your .perlcriticrc file.
1452     * Say "perlcritic -doc PATTERN" to get the documentation for all
1453       Policies that match m/PATTERN/imx.  This is a little easier than
1454       typing in the full name of the Policy module with "perldoc".
1455     * Say "perlcritic --singlepolicy PATTERN" to use one and only one
1456       policy.
1457     * Can now specify exceptions to Variables::ProhibitPackageVars,
1458       for packages like File::Find that only interface through
1459       package variables.
1460
1461     Bug Fixes:
1462     * 21713 false positive for parens used with substr and unpack.
1463     * 22890 allow Rcs keywords in POD.
1464
1465     Internals:
1466     * Testing system overhauled.  Details on the Policy/subtest
1467       framework is in t/run.t.
1468     * Added Perl::Critic::Utils::words_from_string.  This is safer
1469       than plain old C<split /\s+/>.
1470
1471 [0.21]  Released on 2006-11-05
1472
1473     New Policies:
1474     * BuiltinFunctions::ProhibitReverseSortBlock
1475     * BuiltinFunctions::ProhibitVoidGrep
1476     * BuiltinFunctions::ProhibitVoidMap
1477     * CodeLayout::RequireConsistentNewlines
1478     * Modules::RequireFilenameMatchesPackage
1479     * TestingAndDebugging::RequireTestLabels
1480     * ValuesAndExpressions::ProhibitMismatchedOperators
1481
1482     New Features:
1483     * Introduced policy "themes."  Themes are arbitrary names that can
1484       be used to identify a group of related Policies.  You can select
1485       your favorite policies by combining themes in a mathematic expression
1486       such as "pbp * (danger + risky)".  See POD for details.
1487     * perlcritic output is colorized if you have Term::ANSIColor.  This
1488       only works on non-Win32 platforms.  Use -nocolor switch to disable.
1489     * Say "perlcritic -count" to get just the the total number of
1490       violations per file.  Use this feature to quickly identify hot-spots.
1491     * Use the -only switch to choose only from policies mentioned in your
1492       .perlcriticrc file.  This is useful if you usually only want to
1493       work with a small subset of the policies.
1494     * Default values for most of the perlcritic and Perl::Critic options
1495       can now be defined in your .perlcriticrc file.  See POD for details.
1496
1497     Bug Fixes:
1498     * 21236: wrong page number for "printing to filehandles"
1499     * 21916: File handle ... wrong page reference in PBP [DUPE]
1500     * 21714: false positive for capture var used in ternary condition
1501     * 21718: No skip for File::Slurp in includes.t
1502     * ProhibitBarewordFilehandles doesn't complain if you open
1503       STDIN, STDOUT or STDERR.
1504     * Parrot 40564: Subroutines::RequireFinalReturn should allow die,
1505       exit, etc.
1506     * Each "for" and "foreach" loop now adds one point to the McCabe
1507       complexity score.
1508
1509     Other Stuff:
1510     * The internals of Perl::Critic have been significantly refactored,
1511       but should still be compatible with existing third-party Policies.
1512     * Added author-only tests to the release, but disabled by default
1513     * New Perl::Critic::Utils::shebang_line() method
1514     * Support for filename-based policies
1515     * Additional prerequisite: Set::Scalar
1516     * Now requires PPI version 1.118
1517
1518 [0.20]  Released on 2006-09-10
1519
1520     Perl::Critic now requires PPI version 1.117, which fixes
1521     several bugs that were introduced in version 1.116.
1522
1523     Bug Fixes:
1524     * 21079: grep clears @SITE_POLICIES
1525     * 21352: Test failures with PPI 1.117
1526     * 11365: sub DESTROY detected as a builtin homonym
1527
1528 [0.19]  Released on 2006-08-20
1529
1530     New Policies:
1531     * BuiltinFunctions::ProhibitStringySplit
1532     * ControlStructures::ProhibitDeepNests
1533     * RegularExpressions::ProhibitCaptureWithoutTest
1534     * Variables::RequireLexicalLoopIterator
1535
1536     New Features:
1537     * "perlcritic -quiet" suppresses the "source OK" message.
1538     * Variables::ProhibitPunctuationVars is now configurable.
1539
1540     Bug Fixes:
1541     * 20965: "Hard tabs used at" shouldn't check __DATA__
1542     * 21070: ProhibitNoisyQuotes hates overload
1543     * Punctuation variables are now exempt from ProhibitLocalVars
1544
1545     Other Stuff:
1546     * Test coverage is now over 95%
1547
1548 [0.18_01]  Released on 2006-08-06
1549
1550     New Policies:
1551     * Variables::RequireNegativeIndices
1552     * InputOutput::ProhibitInteractiveTest
1553     * ErrorHandling::RequireCarping
1554
1555     Bug Fixes:
1556     * RequireTidyCode tests fail if user has custom .perltidyrc file
1557     * 20612: RequirePerlTidy was ignoring HEREDOCs
1558     * 20659: __END__ statement considered "unreachable"
1559     * Fix for PPI::XS (no C<use overload '""'> support)
1560     * Support for 'goto' in ProhibitAmpersandSigils and
1561       Subroutines::RequireFinalReturn
1562
1563     Performance Enhancements:
1564     * Introduced Perl::Critic::Document class.  This is a facade for
1565       PPI::Document which internally caches search results.  This
1566       reduces the running time by about 35%.  The facade should be
1567       invisible, unless you are doing something really sneaky.
1568     * Extraction of the 'diagnostics' information is postponed
1569       until it is really needed.  Speedup has not been measured.
1570     * Calls to helper-subs have been reordered for maximum efficiency.
1571
1572     Other Cool Stuff:
1573     * Includes updated version of perlcritic mode for emacs.  See
1574       "extras/perlcritic.el" for details.
1575
1576 [0.18]  Released on 2006-07-16
1577
1578     Bug Fixes:
1579     * 14855: Home discovery is dangerously naive.
1580     * 20060: Incorrect page numbers in ProhibitLeadingZeros
1581       and RequireNumberSeparator policies.
1582     * 20068: .perlrc file - inconsistent documentation
1583     * 20254: "use vars qw(@EXPORT_OK)" not recognized
1584     * 20463: No-case heredoc terminator incorrectly detected as lower case.
1585     * ProhibitOneArgBless doesn't understand "bless {} => $class;"
1586     * ProhibitExcessComplexity doesn't count 'while' and 'until' stmnts
1587     * ProhibitLeadingZeros was falsely hits '.0456'
1588
1589     Enhancements:
1590     * If File::HomeDir is available, we use it to locate the
1591       .perlcriticrc file.  This should help make Perl::Critic
1592       more portable to Win32 platforms.  If File::HomeDir is
1593       not installed, we resort to looking at the usual
1594       environment variables.
1595
1596     Other Stuff:
1597     * Added "perlcritic.el", which is a super-cool emacs minor-mode
1598       that runs perl-critic on the current buffer and returns the
1599       results in a sexy hot-linked "compiler" window.  You can run
1600       it on demand, or have it run automatically every time you
1601       save the buffer.  You can find this in the extras/ directory.
1602       Thanks to Josh ben Jore for contributing this.
1603
1604     * Moved "Perl::Critic::TestUtils" into the installed build.  This
1605       module is only used for unit-testing Perl::Critic, but we
1606       are putting it in the installation so folks who want to
1607       extend Perl::Critic can make use of it.
1608
1609 [0.17]  Released on 2006-06-13
1610
1611     Bug Fixes:
1612     * 19836: Perl-Critic0.16 fails tests during install.  This was
1613       caused by a bug in version 3.01 of Module::Pluggable.  See
1614       http://rt.cpan.org/Ticket/Display.html?id=19857 for details.
1615     * Fixed bug in no-critic pragma parser.
1616
1617     New Policies:
1618     * ValuesAndExpressions::ProhibitEscapedCharacters
1619     * BuiltinFunctions::RequireSimpleSortBlock
1620
1621     Enhancements:
1622     * Perl::Critic can export critique() as a static function.  This
1623       may appeal to folks who dislike the object-oriented interface.
1624
1625 [0.16]  Released on 2006-05-14
1626
1627     Enhancements:
1628     * Perl::Critic->critique() now accepts a PPI::Document as the
1629       argument.  This feature creates an additional dependency on
1630       Scalar::Util, but that shouldn't be a problem because it is
1631       included with List::Util, which we already use.
1632
1633     Miscellanea:
1634     * Increased PPI dependency from v1.110 to v1.112
1635
1636 [0.15_03] Released on 2006-05-07
1637
1638     Bug Fixes:
1639     * The "## no critic" feature is now implemented without eval-ing
1640       the code.  This keeps Perl::Critic pure and safe :)
1641     * 19082: Page number for AUTOLOAD is incorrect
1642
1643     New Policies:
1644     * ControlStructures::ProhibitUnreachableCode (by Peter Guzis)
1645     * Modules::ProhibitAutomaticExportation
1646     * ValuesAndExpressions::ProhibitVersionStrings
1647
1648 [0.15_02] Released on 2006-04-26
1649
1650     Bug Fixes:
1651     * Reimplemented the '##no critic' pragmas to have effect on the
1652       line where the violation is reported, not on the line where
1653       the candidate element lives.  This is because some policies
1654       may report violations that are nowhere near the element that
1655       is being evaluated.
1656     * RequireUseStrict, RequireUseWarnings, and RequireExplcitPackage
1657       all emit violations for _every_ statement that violates the
1658       Policy.  This closes a loophole that allowed you to circumvent
1659       the Policy by using '## no critic' on just the first statement
1660       that violated the policy.
1661     * Fixed the workaround for the magic shebang that is inserted
1662       by EU::MM and M::B.  This had stopped working around version 13.
1663     * Fixed -noprofile option on 'perlcritic'.  This also had stopped
1664       working at some point.
1665
1666 [0.15_01] Released on 2006-04-16
1667
1668     Enhancements:
1669     * Added diagnostic messages if the .perlcriticrc contains entries
1670       for Policy modules that don't seem to exist.
1671     * Now you can specify which policies to disable with the
1672       "## no critic" pseudo-pragmas.  This feature is still
1673       experimental.  See docs for details.
1674     * perlcritic's directory searching now skips backup files, such
1675       as *.swp, *.bak and *~.  It also ignores version control system
1676       directories, and the blib directory in module build directories.
1677
1678     Bug Fixes:
1679     * 18386: Bad example in POD for Documentation::RequirePodSections
1680     * 18670: Test failure if Perl::Tidy is not installed
1681     * 18698: Policy idea ProhibitUniversalFunctions (see New Policies)
1682     * RequireInterpolationOfMetachars falsely hit strings like 'foo=s@'
1683       which are commonly used with Getopt::Long.
1684
1685     New Policies:
1686     * BuiltinFunctions::ProhibitUniversalCan (by Chris Dolan)
1687     * BuiltinFunctions::ProhibitUniversalIsa (by Chris Dolan)
1688
1689     Miscellanea:
1690     * All spurrious options for `perlcritic` are now fatal.
1691     * Changed several of the -verbose formats to be more readable.
1692     * Explicit -severity option now overrides -[12345] shortcuts instead
1693       of being the other way around.
1694
1695
1696
1697 [0.15] Released on 2006-03-26
1698
1699     Bug Fixes:
1700     * 17964: Insists my code is not tidy (may not be fixed for all cases)
1701
1702 [0.14_02] Released on 2006-03-19
1703
1704     Bug Fixes:
1705     * 15653: False positive in OneArgSelect (fixed for real this time)
1706
1707     New Policies:
1708     * ClassHierarchies::ProhibitAutoloading
1709     * Documentation::RequirePodSections
1710     * InputOutput::RequireBracedFileHandleWithPrint
1711     * ValuesAndExpressions::ProhibitMixedBooleanOperators
1712     * Variables::RequireInitializationForLocalVars
1713
1714 [0.14_01] Released on 2006-03-05
1715
1716     Bug Fixes:
1717     * 14731: False positive: Builtin function called with parens
1718     * 17554: False positive in CodeLayout::RequireTrailingCommas
1719
1720     New Policies:
1721     * ClassHierarchies::ProhibitExplicitISA
1722     * InputOutput::ProhibitReadlineInForLoop
1723     * Miscellanea::ProhibitFormats
1724     * Miscellanea::ProhibitTies
1725     * Variables::ProhibitConditionalDeclarations
1726
1727 [0.14] Released on 2006-01-29
1728
1729     More documentation edits.
1730
1731     New Policies:
1732     * Documentation::RequirePodAtEnd
1733     * Subroutines::ProtectPrivateSubs
1734     * Variables::ProhibitMatchVars
1735     * Variables::ProtectPrivateVars
1736
1737     Bug Fixes:
1738     * 15295: "## no critic" pragmas too aggresive on compound statements.
1739     * t/01_config.t failed in the presence of third-party policies
1740
1741 [0.13_05] Not released
1742
1743     More documentation edits.
1744
1745     Implemented workaround for failing pod_coverage tests.
1746
1747     Bug Fixes:
1748     * 16906:  tr/// created false-postives with RegularExpression polices.
1749
1750 [0.13_04] Released on 2005-12-31
1751
1752     Moved DEVELOPER.pod file into the Perl/Critic dir.
1753
1754     More documentation edits.
1755
1756 [0.13_03] Released on 20051230
1757
1758     perlcritic now prints 'source OK' if it doesn't find any
1759     violations.  This gives folks a warm fuzzy feeling.
1760
1761     Tweaked some test cases that were failing on my Solaris
1762     environment at work.
1763
1764 [0.13_02] Released on 2005-12-29
1765
1766     Fixed Config to recognize fully-qualified module names in the
1767     .perlcriticrc file.
1768
1769     Various documentation edits.
1770
1771 [0.13_01] Released on 2005-12-28
1772
1773     Replaced 'priority' concept with 'severity'.  Now each Policy module
1774     has a predefined severity level ranging from 1 to 5.  By default,
1775     perlcritic only reports the most severe violations.  You can adjust
1776     the severity threshold at the command line, and you can change
1777     the severity for any Policy using the config file.
1778
1779     Chris implemented the applies_to() mechanism, which allows each Policy
1780     class to declare the types of PPI elements that it wants to examine.
1781     When traversing the document, Perl::Critic invokes the Policy only
1782     for elements that are of the correct type.  This improves performance
1783     by about 33%.
1784
1785     Perl::Critic now uses a Plugin architecture to automatically
1786     discover Policy modules.  So if you have custom Policies, all you
1787     have to do is install them in the Perl::Critic::Policy namespace --
1788     no need to add anything to your .perlcriticrc file.  If you write
1789     policies in a different namespace, you can configure that too.  See
1790     the Perl::Critic::Config docs for details.
1791
1792     New Policies:
1793     * Modules::RequireEndWithOne
1794     * NamingConventions::ProhibitAmbiguousNames
1795     * References::ProhibitDoubleSigils
1796     * Subroutines::RequireFinalReturn
1797     * Subroutines::ProhibitAmpersandSigils
1798     * Subroutines::ProhibitExcessComplexity
1799     * TestingAndDebugging::ProhibitNoStrict
1800     * TestingAndDebugging::ProhibitNoWarnings
1801
1802     Bug Fixes:
1803     * 15101: Plugin architecture improves support for 3rd-party code
1804     * 16319: Fixed incorrect PBP page number in ProhibitBarwordFilehandle
1805     * 16321: Lists of empty quotes are now allowed by ProhibitQuotedWordLists
1806     * 16288: Empty lists caused a fatal error RequireTrailingCommas
1807     * 15653: Fixed false positive in OneArgSelect.
1808
1809 [0.13] Released on 2005-10-31
1810
1811     Official release of 0.12_03.  No code major changes.
1812
1813 [0.12_03] Not released
1814
1815     Renamed -Policy option to -include.  Added -exclude to give the
1816     opposite effect.
1817
1818     Refactored constructor of Perl::Critic.  Now, most of the work
1819     is delegated to Perl::Critic::Config.  I'm not sure I like how
1820     this turned out, but we'll see how it goes.
1821
1822     Renamed some Policy modules to be a bit more comprehensible.  Note
1823     that you may need to change your .perlcriticrc file accordingly.
1824     I also suggest removing your current Perl::Critic installation
1825     before installing this one.
1826
1827     Name Changes:
1828     * ProhibitUnpackagedCode => RequireExplicitPackage
1829     * RequireQuotedWords     => ProhibitQuotedWordLists
1830
1831     Improved error message when Perl::Critic dies because PPI can't
1832     parsee the input code.
1833
1834     Changed output of -help to be more terse.
1835
1836     Edited POD.
1837
1838 [0.12_02] Not released
1839
1840     Added -Policy option to perlcritic.  The idea is to provide a
1841     compact interface for selecting Policy modules at the command-line.
1842     This feature is experimental and subject to change.
1843
1844     Added a warning message if -verbose value looks strange.  In most
1845     applications, the -verbose option does not require a value, so people
1846     might be puzzled when they write 'perlcritic -verbose my_file.pm' and
1847     nothing seems to happen.
1848
1849     Command-line options to perlcritic are now case-sensitive.  This
1850     makes it easier to abbreviate options that start with the same letters
1851     (e.g. 'Version' and 'verbose')
1852
1853     Fixed the new Policy modules that were misnamed and misplaced in the
1854     previous distribution.
1855
1856 [0.12_01] Not released
1857
1858     Rewrote some of the ControlStructures and BuiltinFunction
1859     policies to be simpler (and probably a little faster).
1860
1861     Edited POD.  Fixed some typos.  Added PREREQUISITES section
1862     to Perl::Critic documentation.
1863
1864     Fixed the -verbose FORMAT option so that you can put metachars
1865     in the FORMAT specification.  If using perlcritic, be careful to
1866     protect them from getting munged by the shell first.
1867
1868     Replaced ProhibitRequireStatements with RequireBarewordIncludes
1869     module. Courtesy of Chris Dolan <cdolan@cpan.org>
1870
1871     Added configuration to ProhibitInterpolationOfLiterals so that
1872     certain flavors of quotes can be exempt.  This is for folks who
1873     have configured their editor to use special syntax highlighting
1874     for certain kinds of strings (SQL, for example).
1875
1876     perlcritic now accepts multiple file arguments, so now you can
1877     critique your entire distribution in one shot.  As a result, the
1878     output-formats have changed slightly.
1879
1880     New Policy modules:
1881     * BuiltinFunctions::ProhibitLvalueSubstr
1882     * BuiltinFunctions::ProhibitSleepViaSelect
1883     * ClassHierarchies::ProhibitOneArgBless
1884     * CodeLayout::RequireTrailingCommas
1885     * CodeLayout::RequireQuotedWordLists
1886     * InputOutput::ProhibitTwoArgOpen
1887     * InputOutput::ProhibitOneArgSelect
1888     * InputOutput::ProhibitBarewordFileHandles
1889     * Miscellanea::RequireRcsKeywords
1890     * Modules::RequireVersionVar
1891     * RegularExpressions::RequireExtendedFormatting
1892     * RegularExpressions::RequireLineBoundaryMatching
1893
1894
1895     Bug fixes:
1896     14923: 'require' is now permitted. See RequireBarewordIncludes.
1897     15022: Fixed false-positives when keywords are used as hash keys.
1898     15023: Fixed spurious Violations by removing magic shebang.
1899     15031: Fixed spelling mistakes (and probably added some new ones).
1900     15233: Postfix 'if' is now allowed with 'die', 'croak', etc.
1901
1902 [0.12] Released 2005-10-10
1903
1904     Redesigned the 'verbose' feature.  Now the output format
1905     can be user-defined using a sprintf-like specification.
1906     perlciritc also has a predefined output format that is
1907     compatible with grep mode in editors like vim and emacs.
1908
1909     'return' is now exempt from ProhibitParensWithBuiltins.  I may
1910     extend this exemption to all unary functions.
1911
1912     Edited POD. Added a super brief description of each policy
1913     in the main Perl::Critic documentation.  Added details about
1914     editor integration.
1915
1916     Additional Prerequisites:
1917     * String::Format
1918
1919 [0.11] Not released
1920
1921     The internal dynamics and API of Perl::Critic have changed
1922     considerably.  The result is a 300% increase in performance.
1923     See the POD in Perl::Critic::Policy for details.
1924
1925     New Features:
1926     * Added -verbose option to put more stuff in the output.  In the
1927       extreme, you can get the POD from Policy attached to each
1928       and every violation.
1929
1930     Additional Prerequisites:
1931     * IO::String
1932     * Pod::PlainText
1933
1934 [0.10] Released 2005-10-05
1935
1936     Fixed stupid bug in newest Policy modules.  They were returning
1937     PPI objects instead of Perl::Critic::Violation objects.  Doh!
1938
1939     Fixed test scripts to prevent failures if the user already has a
1940     .perlcriticrc file.
1941
1942     'ProhibitHardTabs' now allows leading tabs by default.
1943
1944     Put the Changes file in reverse-chronological order, so the most
1945     recent stuff is easy to find at the top of the file
1946
1947 [0.09] Released 2005-10-04
1948
1949     Fixed several bugs:
1950     * 14810: Now you are allowed to create your own 'import' function,
1951              since this is frequently done with fancy modules.
1952     * 14817: Parens, brackets, and braces are now excluded from
1953              'ProhibitNoisyQuotes' since they look better in quotes anyway.
1954     * 14787: $1..$9 and '_' are exempt from ProhibitPunctuationVars
1955     * 14899: Object methods with the same name as a built-in can
1956              be called with parens (ProhibitParensWithBuiltins).
1957     * 14901: Normalized the exit status of perlcritic to 0, 1, or 2.
1958              See documentation for explanation.
1959     * 14855: Partially fixed home directory discovery.  Still not
1960              completely portable, but at least doesn't create warnings.
1961
1962     New features:
1963     * 14734: Limit for number separators is now configurable
1964
1965     New Policy modules:
1966     * CodeLayout::ProhibitHardTabs
1967     * ControlStructures::ProhibitUnlessBlocks
1968     * ControlStructures::ProhibitUntilBlocks
1969     * ControlStructures::ProhibitCStyleForLoops
1970
1971     Changed the syntax for the magic comments.  Adam had the
1972     idea of using a pragma-like notation.  I liked it.
1973
1974 [0.08_2] Released 2005-09-27
1975
1976     Fixed problems with Perl::Critic::Config that caused File::Spec
1977     to emit 'uninitialized value' warnings during the build.
1978
1979     Added 1 Policy module contributed by Graham TerMarsch
1980
1981     Switched from File::Spec::Functions to plain File::Spec because
1982     I think its usage is more common.
1983
1984     Removed 'FindBin' from the test files so I can be sure that the
1985     right libraries are getting loaded.  This means I'll have to
1986     use the -l option with C<prove>.
1987
1988     Edited more POD.
1989
1990 [0.08_01] Not released
1991
1992     Fixed "ProhibitParensWithBuiltins" to allow parens to be used with
1993     object method calls that have the same name as a builtin functions.
1994
1995     Introduced magical comments that allow developers to configure
1996     Perl::Critic on-the-fly from within their code.
1997
1998     Added META.yml files and POD tests to the build.  I did this
1999     mostly just to boost the Kwalitee score on CPANTS.
2000
2001     Switched from "Config::Std" to "Config::Tiny" because it doesn't
2002     require those fancy Damian modules that don't seem to work on
2003     some older versions of Perl.
2004
2005 [0.07] Released on 2005-09-21
2006
2007     Fixed bugs in the ProhibitCascadingIfElse policy.
2008
2009     Added ProhibitExplicitReturnUndef policy
2010
2011     Made ProhibitUnpackagedCode configurable so you can exempt scripts,
2012     which typically don't have an explicit 'package' statement.
2013
2014     ProhibitPackageVars policy now exempts vars in ALL_CAPS.  This
2015     is to permit common package variables like @EXPORT and $VERSION.
2016
2017     Renamed "ProhibitStringyGrep and "ProhibitStringyMap" because
2018     the so-called string form doesn't really exist.  Now called
2019     "RequireBlockGrep" and "RequireBlockMap"
2020
2021     Corrected documentation on defining Policy names within the
2022     configuration file.  This still isn't very clear and needs
2023     to be rewritten.
2024
2025     Perl::Critic now requires PPI version 1.003, which has a few bug
2026     fixes of its own.
2027
2028     Rewrite some code just to make Perl::Critic more self-compliant.
2029
2030     Added test cases to verify the configuration functionality.  These
2031     are not completely thorough and need more work.
2032
2033 [0.06] Released on 2005-09-17
2034
2035     Now called 'Perl::Critic'.
2036
2037     Added 4 new policy modules.
2038
2039     Fixed bugs in build process.
2040
2041     Added support for Module::Build.
2042
2043 [0.05] Released on 2005-09-17
2044
2045     End of 'Perl::Review' releases.  I have changed the name to
2046     'Perl::Critic' to avoid possible confusion with "The Perl Review"
2047     magazine.
2048
2049 [0.04] Released on 2005-09-14
2050
2051     Version 0.03 was a bust because I uploaded the wrong tarball to PAUSE.
2052
2053 [0.03] Released on 2005-09-13.
2054
2055     Fixed some POD links.
2056
2057     Removed test cases for missing policy module.
2058
2059 [0.02] Released on 2005-09-13.
2060
2061     Major overhaul based on feedback from Perl community.
2062
2063     Factored coding standards into separate modules (known as
2064     Policies).  The idea here is to allow other developers to easily
2065     contribute additional coding standards.
2066
2067     Reworked Perl::Review into a simple engine for loading and running
2068     Policy modules.
2069
2070     Gave perlreview a command-line interface and configuration file
2071     for selecting which Policy modules to use.
2072
2073 [0.01] Released on 2005-08-16.
2074
2075     Initial version.
2076
2077 ##############################################################################
2078 #      $URL$
2079 #     $Date$
2080 #   $Author$
2081 # $Revision$
2082 ##############################################################################
2083
2084 # ex: set ts=8 sts=4 sw=4 tw=78 ft= expandtab shiftround :