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