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