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