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