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