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