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