Login
svn merge -r 2029:2018 ProhibitNegativeExpressionsInUnlessAndUntilConditions.run.PL
[gknop/Perl-Critic.git] / Changes
CommitLineData
3d075ed6
JRT
1[1.xxx] Released on ????-??-??
2
3 Bug Fixes:
4 * RT #31281 perlcritic doesn't recognize "#!/bin/env perl" shebang
5
da251890
ES
6[1.080] Released on 2007-11-11
7
8 Internals:
9 * Continued movement towards removing all use of Carp in favor of
10 exceptions. Notes for 1.079_003 should have included mention of new
11 dependency upon Exception::Class.
12
6f7ddae7
ES
13[1.079_003] Released on 2007-10-22
14
15 Prerequisites:
16 * Now requires PPI 1.201 to get rid of the annoying warning about
17 PPI::Exception::ParserTimeout subclassing from itself.
18
19 Bug fixes:
20 * PPI::Structure::List can now contain multiple children,
21 so P::C::Utils::parse_arg_list() needs to handle it.
22
23 This was done in the process of fixing
24 http://rt.cpan.org/Ticket/Display.html?id=24924, which was a problem
25 with TestingAndDebugging::RequireTestLabels.
26
27 * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls wasn't resetting
28 chain length when it ran into the end of a sub-expression.
29
a5344bc6
ES
30 http://rt.cpan.org/Public/Bug/Display.html?id=30040
31
3026a203 32[1.079_002] Released on 2007-10-21
19f0b629
ES
33
34 Prerequisites:
35 * Now requires PPI 1.200. A number of workarounds for PPI bugs have been
36 removed.
37
38 Bug fixes:
39 * ValuesAndExpressions::ProhibitCommaSeparatedStatements was reporting
40 false positives when builtins which accept both no and multiple
41 arguments were involved.
42 http://rt.cpan.org/Public/Bug/Display.html?id=27654
43
1dfd093a 44[1.079_001] Released on 2007-10-09
8b5a642f
CD
45
46 New Policies: (funded by a Perl Foundation grant)
47 * InputOutput::ProhibitExplicitStdin
48 * RegularExpressions::ProhibitFixedStringMatches
6a4d1045
CD
49 * RegularExpressions::RequireBracesForMultiline
50 * RegularExpressions::ProhibitUnusualDelimiters
ec024463 51 * RegularExpressions::ProhibitUnusedCapture
682ce894 52 * RegularExpressions::ProhibitComplexRegexes
ec024463 53 * RegularExpressions::ProhibitSingleCharAlternation
e25c095f 54 * RegularExpressions::ProhibitEscapedMetacharacters
cf330359 55 * RegularExpressions::ProhibitEnumeratedClasses
2889349f 56 * InputOutput::RequireBriefOpen
cbb58756 57 * InputOutput::RequireCheckedSyscalls
8b5a642f 58
47e84f39
ES
59 Other New Policies
60 * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
61
e10c8f10
JRT
62 Policy Changes:
63 * Variables::ProhibitConditionalDeclarations now permits you to local-ize
a2f58b24
ES
64 variables in conditional declarations. This makes sense, since
65 C<local> is actually a variable modifier, rather than a declaration.
66 Thanks to David Golden for reporting this.
e10c8f10 67
1c6e69da
CD
68 New Features:
69 * Allow a "## no critic" statement after a shebang on line 1 of a
70 file. This allows users to block violations that apply to
71 whole files and still allow shebangs.
72
8b5a642f
CD
73 New Developer Features:
74 * Perl::Critic::Utils::PPIRegexp encapsulates interaction with
75 the PPI Regexp token classes. Those classes have very sparse
6a4d1045 76 APIs, so this package hides away the ugly fiddling with PPI
8b5a642f 77 internals.
90c0067c 78 * Added a new optional_modules parameter for the .run syntax.
8b5a642f 79
a2f58b24
ES
80 Installation:
81 * Use Devel::CheckOS to see whether Perl::Critic is being installed on
82 a Solaris system and warn about tar(1) chopping file names off if it
83 is.
84
b4d9a58e
ES
85[1.078] Released on 2007-09-19
86
87 Restore Perl::Critic::TestUtils::should_skip_author_tests() and
88 get_author_test_skip_message(). Some Perl::Critic add-on distributions
89 are using them.
90
496afbe0
ES
91[1.077] Released on 2007-09-15
92
93 Note: if you don't have any problems installing Perl::Critic 1.076, there
94 is no need to upgrade to this version. There are no functionality
95 changes. This release only contains changes related to installation that
96 a few people were experiencing.
97
98 Minor changes:
99 * Removed build-time use of Readonly, again, due to problems some people
100 were having when trying to compile the code by hand, rather than using
101 CPAN(PLUS)?.
102 * Don't run author tests if there's a .svn directory present because
103 users who grabbed the code from the source repository were executing
104 them and getting failures.
105 * Don't generate optional, module-hiding test wrappers if author tests
106 are not enabled.
107
108
bb9f1668
ES
109[1.076] Released on 2007-09-07
110
111 It appears from reports on the 1.075_001 release that the subroutine
112 sigils were indeed the problem. Release to the general populace.
113
114
70f3f307
ES
115[1.075_001] Released on 2007-09-06
116
117 Bug Fixes:
118 Undo the changes in 1.073 and 1.074. Instead, stop using the subroutine
119 sigil in import and export lists. It is suspected that the problem lies
120 with Exporter stripping off ampersands.
121
a93bf8bd
ES
122[1.074] Released on 2007-09-04
123
124 Bug Fixes:
125 Repeat the Makefile.PL change on
126 t/generate_without_optional_dependencies_wrappers.PL.
127 I love CPAN Testers.
128
fb768776
ES
129[1.073] Released on 2007-09-04
130
131 Bug Fixes:
132 Work around problems with the combination of Exporter & Readonly in
133 Makefile.PL on some machines.
134
5d0abeb9 135[1.072] Released on 2007-09-03
34cc6052
ES
136
137 Bug Fixes:
138 * The Makefile generated by Makefile.PL was not syntactically correct
d2e1a13b
ES
139 according to some versions of Solaris. Thanks to Diab Jerius
140 (DJERIUS) for discovery and testing.
34cc6052
ES
141 * Fixed mis-definition of "quiet" value for the "--profile-strictness"
142 option.
143 * Enhanced testing with the absence of optional modules.
144
6d4236fe 145[1.071] Released on 2007-08-24
6a0a13da 146
caf00bc9
ES
147 The "Brown Paper Bag" Release
148
149 Bug Fixes:
150 * Tests would not pass in environments that did not have all optional
151 dependencies installed.
152
153[1.07] Released on 2007-08-21
154
99c6a9fc 155 New Policies: (funded by a Perl Foundation grant)
b34e4aff 156 * BuiltinFunctions::ProhibitBooleanGrep
369abea9 157 * BuiltinFunctions::ProhibitComplexMappings
1c567fa8 158 * Documentation::PodSpelling
ba2c852f 159 * InputOutput::ProhibitJoinedReadline
9f12283e
ES
160 * Subroutines::ProhibitManyArgs
161 * Subroutines::RequireArgUnpacking
162 * ValuesAndExpressions::ProhibitImplicitNewlines
163 * Variables::RequireLocalizedPunctuationVars
369abea9 164
1bead068
ES
165 Other New Policies
166 * Subroutines::ProhibitNestedSubs
167
9f12283e
ES
168 New Features:
169 * The "perlcritic --profile-proto" output now includes the "add_themes"
170 parameter for each policy.
171 * The perlcritic "--strict-profile" option has been replaced with a
172 "--profile-strictness" option. This new option takes values of "warn"
173 (the default), "fatal", and "quiet", which controls what happens with
174 ignorable problems in a .perlcriticrc file.
175
8674d94e
ES
176 New Developer Features:
177 * Perl::Critic::Policy now has an overridable initialize_if_enabled()
178 method which allows a Policy to perform expensive initialization after
179 it has been determined whether the user has it enabled or not. Also,
180 this method allows a Policy to say that it should be disabled
181 regardless of what the user says.
182
9f12283e
ES
183 Actually, use of this method is now encouraged over using a
184 constructor.
185
1852a12c
ES
186 Other Stuff:
187 * Now requires the Readonly module in order to be more self-compliant.
188
7e4ad2a0 189[1.061] Released on 2007-07-24
1852a12c 190
6a0a13da
ES
191 Bug Fixes:
192 * Fix P::C::Theme-- Exporter in Perl 5.6 does not export import(), so you
193 must subclass it. *sigh*
839af03d
ES
194 * Fix P::C::Config::_validate_and_save_theme()-- eval of an empty string
195 does not reset $@/$EVAL_ERROR in Perl 5.6.
196
197 Big thanks to Anirvan Chatterjee for identifying and helping debug these
198 issues.
6a0a13da 199
a8552b47 200[1.06] Released on 2007-06-27
2e0f1c94 201
7b94eb6d 202 New Features:
2e0f1c94
ES
203 * perlcritic now emits errors for all the problems it can find for the
204 global options in the command-line parameters and .perlcriticrc file,
205 rather than bailing on the first one it encounters.
206
738830ba 207 * perlcritic now has a "--strict-profile" option which will make warnings
66186ba3
ES
208 about problems in a profile fatal.
209
738830ba
ES
210 * perlcritic now has a "--statistics-only" option which suppresses the
211 display of individual violations and only shows the additional output
212 produced by the "--statistics" option.
213
25792f52 214 Feature requests:
51ae9d9b 215 * A value for "color" can now be specified in a .perlcriticrc.
4203e2fa 216 http://rt.cpan.org/Ticket/Display.html?id=24877
25792f52 217
68a933bc
ES
218 New Policies:
219 * ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
4203e2fa 220 As suggested in http://rt.cpan.org/Ticket/Display.html?id=23290.
5ae848f1 221 * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
4203e2fa
ES
222 * Modules::ProhibitExcessMainComplexity
223 As suggested in http://rt.cpan.org/Ticket/Display.html?id=24699
68a933bc 224
7b94eb6d 225 Minor changes:
738830ba 226 * The perlcritic "--profile-proto" option now emits the short names for
7b94eb6d
ES
227 policies, rather than the full ones.
228
738830ba
ES
229 * The "-profileproto" and "-singlepolicy" options have been renamed to
230 "-profile-proto" and "-single-policy" in order to make the growing
231 number of command-line options comprehensible. The change of
232 "singlepolicy" also affects your F<.perlcriticrc> file.
233
c5609030
JRT
234[1.053] Released on 2007-06-02
235
236 *DEVELOPMENT RELEASE*
237
238 Bug Fixes:
239 Fixed bug in 15_statustics.t test script, which caused the build
240 to fail on machines that don't have Perl::Tidy installed.
241
8ff941e7 242[1.052] Released on 2007-06-01
e1a212fa 243
c5609030
JRT
244 *DEVELOPMENT RELEASE*
245
576f6411
ES
246 New Features:
247 * perlcritic now emits a summary about the scanned code when enabled by
248 the "-statistics" option.
249
464d4c66
ES
250 Policy Enhancements:
251 * InputOutput::ProhibitBacktickOperators can now be configured to only
252 check in void contexts.
253
e1a212fa 254 Bug Fixes:
db5e49e8 255 * 27073: False positive in RequireUpperCaseHeredocTerminator
67d04334 256 * 27065: CodeLayout::ProhibitTrailingWhitespace breaks under Perl 5.6.1
74135aba 257 * 26462: ControlStructures::ProhibitCascadingIfElse pod typo
e1a212fa 258 * ValuesAndExpressions::ProhibitCommaSeparatedStatements was complaining
afa2d035
JRT
259 about multiple values in the list to be iterated over by a foreach loop.
260 * Corrected PBP page numbers for some policies (Quinn Weaver).
db5e49e8 261
be3d6b0b
JRT
262[1.051] Released on 2007-04-12
263
264 *DEVELOPMENT RELEASE*
265
266 No new policies.
267 No particular bug fixes.
f1a58c7c
JRT
268
269 Internals:
270 * Added several new utility functions to support the StricterSubs distro.
271 Also, some of the existing functions in Perl-Critic-Utils have
272 changed in ways that might break your custom policies.
273
274 Miscellanea:
275 * Updated Emacs plugin (Courtesy Josh ben Jore).
276 See extras/perlcritic.el for details.
277 * Added copy of BBEdit plugin (Courtesy of Josh Clark).
278 See extras/perl_critic_for_bbedit-1_0.zip for details
279
a65bc95d
JRT
280[1.05] Released on 2007-03-19
281
282 Bug Fixes:
283 * 25557: t/20_policy_prohibittrailingwhitespace.t fails on Perl 5.8.0
284
47415a5b 285[1.04] Released on 2007-03-18
7e50c40d
JRT
286
287 Bug Fixes:
288 * 25008: Subroutines::RequireFinalReturn should allow "throw"
1e9d3270 289 * 25085: False Positive - Heredoc terminator must be quoted
496afbe0 290 * 18423: VERSION check does not notice Readonly::Scalar version
47415a5b 291 * 25449: Proposal of $VERSION declaration (DUPLICATE)
7e50c40d 292
74dfa143 293 New Policies:
8e2aefdb 294 * CodeLayout::ProhibitTrailingWhitespace
c948abe5 295 * ValuesAndExpressions::ProhibitCommaSeparatedStatements
74dfa143
ES
296 * Variables::ProhibitPerl4PackageNames
297
7e50c40d
JRT
298 Policy Enhancements:
299 * Subroutines::RequireFinalReturn can now be configured to recognize
47415a5b 300 your custom functions that behave like "die" or "exit".
e7c4e9fa
ES
301 * Documentation::RequirePodSections can be configured to match
302 Module::Starter:PBP or to really match the PBP book.
7e50c40d 303
34883f65 304[1.03] Released on 2007-02-13
7807e1bf
JRT
305
306 Bug Fixes:
307 * Fixed a few more problems with the %f, %F, and %r format escapes.
2d106991
JRT
308 * I forgot to put Conway's perlcriticrc file in the MANIFEST. Sorry.
309
310 Interface Changes:
34883f65
JRT
311 * Perl::Critic::Utils automatically exports everything. However,
312 this is deprecated. In the future, you must request your exports.
2d106991 313
34883f65
JRT
314 Policy Changes:
315 * Duplicate violations of RequireExcplicitPackage are now squelched,
316 in the same way as RequireUseStrict and RequireUseWarnings.
7807e1bf 317
dd85a2e2 318[1.02] Released on 2007-02-11
7580d822
JRT
319
320 Bug Fixes:
321 * "undef" incorrectly triggered ProhibitMutatingListFunctions.
dd85a2e2
JRT
322 * 24876: %f and %F escapes not working in custom "verbose" format strings.
323 * 24875: Documentation bug in TestingAndDebugging::ProhibitNoStrict
7580d822 324
9fb2d1dc
AM
325 New Policies:
326 * InputOutput::RequireCheckedOpen
327 * InputOutput::RequireCheckedClose
328
dd85a2e2
JRT
329 Other Cool Stuff:
330 * Added Conway's own suggested Perl::Critic configuration as
331 examples/perlcriticrc-conway.
332
496afbe0 333 * See the examples/ directory for some neat demonstrations of using
dd85a2e2
JRT
334 the Perl::Critic API. Contributed by Elliot Shank.
335
bbf4108c
ES
336 Interface Changes:
337 * Perl::Critic::Utils no longer exports anything by default. Policies
338 outside the distribution will need to specify what exactly they need
339 from this module. There are a number of tags that can be used in
340 addition to individual imports.
341
839f3ee0
JRT
342[1.01] Released on 2007-01-24
343
344 PRODUCTION RELEASE: You may now consider the public Perl::Critic
345 API as "stable." Future minor releases will focus on bug fixes,
346 new policies, and internal refactoring.
16cfe89e 347
a320d043
JRT
348 Bug Fixes:
349 * Fixed memory leak. This was reported by the Parrot team at
350 http://rt.perl.org/rt3/Ticket/Display.html?id=41230
16cfe89e 351
c10663c1 352[0.23] Released on 2007-01-19
e2d4c0f0
JRT
353
354 Bug Fixes:
355 * 23994: Test 56 in t/05_utils.t of Perl::Critic v0.22 fails
b9e520c1 356 * 24005: test 95 in t/13_bundled_policies fails in 0.22
9eb1fee5 357
e2d4c0f0 358
34510f7e
JRT
359 Groovy New Features:
360 * Added '%F' to the Violation format specifications. This will
361 give you just the name of file where the violation occurred
362 (i.e. without the path).
363
b9e520c1
JRT
364 * Improved validation of .perlcriticrc file. An invalid
365 default setting will now cause a fatal exception. A
366 strange-looking policy name will cause a warning.
0d63e03a 367
98768f5b
JRT
368
369 Interface Changes:
370 * The syntax for theme expressions has changed. Instead of using
a320d043 371 mathematical operators qw(+ * -) you must now use the logical
98768f5b 372 operators qw(|| && !). See the Perl::Critic docs for more info.
496afbe0 373
e2d4c0f0
JRT
374 * The @GLOBALS and @BUILTINS variables are no longer exported by
375 Perl::Critic::Utils. Use the is_perl_global() and is_perl_builtin()
376 functions instead.
98768f5b 377
e178fe38 378 * Perl::Critic::Policy::policy_parameters() has bee renamed to
98768f5b
JRT
379 Perl::Critic::Policy::supported_paramters(). This was an
380 undocumented feature anyway, so it shouldn't affect anyone.
381
382
383 Other Internal Changes:
384 * Perl::Critic now requires B::Keywords v1.05 or newer.
385
386 * A few internal classes have been refactored. As a result,
387 Set::Scalar is no longer a required dependency.
e2d4c0f0
JRT
388
389
59c20113 390[0.22] Released on 2006-12-15
4994405b 391
0bcb38c0 392 New Features:
fd5bd7b5
JRT
393 * Introduced named severity levels: gentle, stern, harsh, cruel, brutal
394 You can use these named levels instead of the numeric ones.
395 For example: "perlcritic --severity=cruel MyModule.pm"
59c20113 396 Or just: "perlcritic --cruel MyModule.pm"
fd5bd7b5
JRT
397
398 * For perlcritic, the "-List" option has been renamed to
399 "-profileproto". The output now includes the names of the
59c20113 400 parameters that each Policy supports, if any.
fd5bd7b5
JRT
401
402 * Improved validation of Policy parameters in your F<.perlcriticrc>
59c20113 403 Any invalid parameter now causes a fatal exception.
0bcb38c0
JRT
404
405 Major Changes:
406 * Reassigned themes for most policies. Now there are fewer
59c20113
JRT
407 themes and they are organized around programming concepts
408 instead of severity levels. If you have assigned your own
409 themes to any Policies, they should still work as expected.
0bcb38c0 410
e2365912
ES
411 Policy Changes:
412 * ErrorHandling::RequireCarping will not complain if it can figure
413 out that the die or warn message will always end in a newline
414 ("\n"). The idea is that, if you put the newline there, you
415 don't indend for there to be any file/line/stack information
416 emitted, in which case you really don't want carp/croak.
417
e97e0a99
ES
418 You can restore the old strict behavior by giving the policy
419 a false value for "allow_messages_ending_with_newlines" in your
420 configuration.
421
0bcb38c0 422 Misc Changes:
fd5bd7b5 423
7410be2d 424 Added single-letter uppercase alternatives for some perlcritic options.
4994405b 425
82bdf993 426[0.21_01] Released on 2006-12-03
3f5f950c
CD
427
428 New Policies:
d0393fa4 429 * TestingAndDebugging::ProhibitProlongedStrictureOverride
188e5619 430 * ControlStructures::ProhibitMutatingListFunctions
3f5f950c 431
a04c6a19
JRT
432 New Features:
433 * Say "perlcritic -List" to get an expanded listing of all Policies.
434 The format is suitable for use as your .perlcriticrc file.
188e5619
JRT
435 * Say "perlcritic -doc PATTERN" to get the documentation for all
436 Policies that match m/PATTERN/imx. This is a little easier than
437 typing in the full name of the Policy module with "perldoc".
585ddee1
ES
438 * Say "perlcritic --singlepolicy PATTERN" to use one and only one
439 policy.
fb634cf5
AL
440 * Can now specify exceptions to Variables::ProhibitPackageVars,
441 for packages like File::Find that only interface through
442 package variables.
a04c6a19
JRT
443
444 Bug Fixes:
445 * 21713 false positive for parens used with substr and unpack.
446 * 22890 allow Rcs keywords in POD.
447
095ee6e3
AL
448 Internals:
449 * Testing system overhauled. Details on the Policy/subtest
450 framework is in t/run.t.
4a7a7227
AL
451 * Added Perl::Critic::Utils::words_from_string. This is safer
452 than plain old C<split /\s+/>.
095ee6e3 453
7f03b11b 454[0.21] Released on 2006-11-05
1876bbe8
CD
455
456 New Policies:
e7f2d995 457 * BuiltinFunctions::ProhibitReverseSortBlock
d392fbb1
JRT
458 * BuiltinFunctions::ProhibitVoidGrep
459 * BuiltinFunctions::ProhibitVoidMap
70390a27 460 * CodeLayout::RequireConsistentNewlines
94dc7f45
JRT
461 * Modules::RequireFilenameMatchesPackage
462 * TestingAndDebugging::RequireTestLabels
463 * ValuesAndExpressions::ProhibitMismatchedOperators
1876bbe8 464
0ff2db41 465 New Features:
7eb74da0
JRT
466 * Introduced policy "themes." Themes are arbitrary names that can
467 be used to identify a group of related Policies. You can select
94dc7f45 468 your favorite policies by combining themes in a mathematic expression
496afbe0 469 such as "pbp * (danger + risky)". See POD for details.
0ff2db41
JRT
470 * perlcritic output is colorized if you have Term::ANSIColor. This
471 only works on non-Win32 platforms. Use -nocolor switch to disable.
472 * Say "perlcritic -count" to get just the the total number of
7eb74da0 473 violations per file. Use this feature to quickly identify hot-spots.
94dc7f45
JRT
474 * Use the -only switch to choose only from policies mentioned in your
475 .perlcriticrc file. This is useful if you usually only want to
476 work with a small subset of the policies.
7b84ff16 477 * Default values for most of the perlcritic and Perl::Critic options
0ff2db41
JRT
478 can now be defined in your .perlcriticrc file. See POD for details.
479
480 Bug Fixes:
481 * 21236: wrong page number for "printing to filehandles"
482 * 21916: File handle ... wrong page reference in PBP [DUPE]
483 * 21714: false positive for capture var used in ternary condition
484 * 21718: No skip for File::Slurp in includes.t
19e61c75
AL
485 * ProhibitBarewordFilehandles doesn't complain if you open
486 STDIN, STDOUT or STDERR.
fdd4a3c6
CD
487 * Parrot 40564: Subroutines::RequireFinalReturn should allow die,
488 exit, etc.
7b84ff16
JRT
489 * Each "for" and "foreach" loop now adds one point to the McCabe
490 complexity score.
0ff2db41 491
1876bbe8 492 Other Stuff:
7eb74da0
JRT
493 * The internals of Perl::Critic have been significantly refactored,
494 but should still be compatible with existing third-party Policies.
1876bbe8 495 * Added author-only tests to the release, but disabled by default
113ba0d8 496 * New Perl::Critic::Utils::shebang_line() method
7eb74da0
JRT
497 * Support for filename-based policies
498 * Additional prerequisite: Set::Scalar
499 * Now requires PPI version 1.118
1876bbe8
CD
500
501[0.20] Released on 2006-09-10
9ee6a397
JRT
502
503 Perl::Critic now requires PPI version 1.117, which fixes
504 several bugs that were introduced in version 1.116.
505
506 Bug Fixes:
507 * 21079: grep clears @SITE_POLICIES
508 * 21352: Test failures with PPI 1.117
509 * 11365: sub DESTROY detected as a builtin homonym
510
511[0.19] Released on 2006-08-20
f7231315
JRT
512
513 New Policies:
90f4300b 514 * BuiltinFunctions::ProhibitStringySplit
ea5ee301 515 * ControlStructures::ProhibitDeepNests
876c81c6 516 * RegularExpressions::ProhibitCaptureWithoutTest
f7231315 517 * Variables::RequireLexicalLoopIterator
b22c8627 518
8b5892fc 519 New Features:
be8538d2
JRT
520 * "perlcritic -quiet" suppresses the "source OK" message.
521 * Variables::ProhibitPunctuationVars is now configurable.
8b5892fc 522
c4a2374c
JRT
523 Bug Fixes:
524 * 20965: "Hard tabs used at" shouldn't check __DATA__
06202ca8 525 * 21070: ProhibitNoisyQuotes hates overload
be8538d2 526 * Punctuation variables are now exempt from ProhibitLocalVars
c4a2374c 527
876c81c6
CD
528 Other Stuff:
529 * Test coverage is now over 95%
530
be8538d2 531[0.18_01] Released on 2006-08-06
b22c8627 532
1bd11ec1
CD
533 New Policies:
534 * Variables::RequireNegativeIndices
446dddf9 535 * InputOutput::ProhibitInteractiveTest
af3b9793 536 * ErrorHandling::RequireCarping
1bd11ec1 537
b22c8627
JRT
538 Bug Fixes:
539 * RequireTidyCode tests fail if user has custom .perltidyrc file
f4aad68e 540 * 20612: RequirePerlTidy was ignoring HEREDOCs
5e5a36a8 541 * 20659: __END__ statement considered "unreachable"
f4aad68e
CD
542 * Fix for PPI::XS (no C<use overload '""'> support)
543 * Support for 'goto' in ProhibitAmpersandSigils and
544 Subroutines::RequireFinalReturn
b22c8627
JRT
545
546 Performance Enhancements:
547 * Introduced Perl::Critic::Document class. This is a facade for
548 PPI::Document which internally caches search results. This
549 reduces the running time by about 35%. The facade should be
550 invisible, unless you are doing something really sneaky.
551 * Extraction of the 'diagnostics' information is postponed
552 until it is really needed. Speedup has not been measured.
553 * Calls to helper-subs have been reordered for maximum efficiency.
554
555 Other Cool Stuff:
556 * Includes updated version of perlcritic mode for emacs. See
557 "extras/perlcritic.el" for details.
558
be8538d2 559[0.18] Released on 2006-07-16
0c43b2ce
JRT
560
561 Bug Fixes:
562 * 14855: Home discovery is dangerously naive.
563 * 20060: Incorrect page numbers in ProhibitLeadingZeros
564 and RequireNumberSeparator policies.
565 * 20068: .perlrc file - inconsistent documentation
566 * 20254: "use vars qw(@EXPORT_OK)" not recognized
02b99701
JRT
567 * 20463: No-case heredoc terminator incorrectly detected as lower case.
568 * ProhibitOneArgBless doesn't understand "bless {} => $class;"
569 * ProhibitExcessComplexity doesn't count 'while' and 'until' stmnts
570 * ProhibitLeadingZeros was falsely hits '.0456'
0c43b2ce
JRT
571
572 Enhancements:
573 * If File::HomeDir is available, we use it to locate the
574 .perlcriticrc file. This should help make Perl::Critic
575 more portable to Win32 platforms. If File::HomeDir is
576 not installed, we resort to looking at the usual
577 environment variables.
578
6a1cac48
JRT
579 Other Stuff:
580 * Added "perlcritic.el", which is a super-cool emacs minor-mode
581 that runs perl-critic on the current buffer and returns the
582 results in a sexy hot-linked "compiler" window. You can run
583 it on demand, or have it run automatically every time you
584 save the buffer. You can find this in the extras/ directory.
585 Thanks to Josh ben Jore for contributing this.
586
587 * Moved "Perl::Critic::TestUtils" into the installed build. This
588 module is only used for unit-testing Perl::Critic, but we
589 are putting it in the installation so folks who want to
590 extend Perl::Critic can make use of it.
591
be8538d2 592[0.17] Released on 2006-06-13
08624963
JRT
593
594 Bug Fixes:
491e8b78
JRT
595 * 19836: Perl-Critic0.16 fails tests during install. This was
596 caused by a bug in version 3.01 of Module::Pluggable. See
597 http://rt.cpan.org/Ticket/Display.html?id=19857 for details.
598 * Fixed bug in no-critic pragma parser.
08624963 599
9c9fbe13
CD
600 New Policies:
601 * ValuesAndExpressions::ProhibitEscapedCharacters
ba619093 602 * BuiltinFunctions::RequireSimpleSortBlock
9c9fbe13 603
491e8b78
JRT
604 Enhancements:
605 * Perl::Critic can export critique() as a static function. This
606 may appeal to folks who dislike the object-oriented interface.
607
be8538d2 608[0.16] Released on 2006-05-14
15bfb880 609
c46b6238
JRT
610 Enhancements:
611 * Perl::Critic->critique() now accepts a PPI::Document as the
612 argument. This feature creates an additional dependency on
613 Scalar::Util, but that shouldn't be a problem because it is
614 included with List::Util, which we already use.
15bfb880 615
c46b6238
JRT
616 Miscellanea:
617 * Increased PPI dependency from v1.110 to v1.112
15bfb880 618
be8538d2 619[0.15_03] Released on 2006-05-07
4f7da5f8
JRT
620
621 Bug Fixes:
622 * The "## no critic" feature is now implemented without eval-ing
623 the code. This keeps Perl::Critic pure and safe :)
15bfb880 624 * 19082: Page number for AUTOLOAD is incorrect
4f7da5f8
JRT
625
626 New Policies:
15bfb880 627 * ControlStructures::ProhibitUnreachableCode (by Peter Guzis)
977dbe11 628 * Modules::ProhibitAutomaticExportation
c5e3466b 629 * ValuesAndExpressions::ProhibitVersionStrings
4f7da5f8 630
be8538d2 631[0.15_02] Released on 2006-04-26
1bef6e21
JRT
632
633 Bug Fixes:
634 * Reimplemented the '##no critic' pragmas to have effect on the
635 line where the violation is reported, not on the line where
636 the candidate element lives. This is because some policies
637 may report violations that are nowhere near the element that
638 is being evaluated.
639 * RequireUseStrict, RequireUseWarnings, and RequireExplcitPackage
640 all emit violations for _every_ statement that violates the
641 Policy. This closes a loophole that allowed you to circumvent
642 the Policy by using '## no critic' on just the first statement
643 that violated the policy.
644 * Fixed the workaround for the magic shebang that is inserted
645 by EU::MM and M::B. This had stopped working around version 13.
646 * Fixed -noprofile option on 'perlcritic'. This also had stopped
647 working at some point.
350f4137 648
be8538d2 649[0.15_01] Released on 2006-04-16
520d94ce
JRT
650
651 Enhancements:
652 * Added diagnostic messages if the .perlcriticrc contains entries
f3ce038e 653 for Policy modules that don't seem to exist.
9b32fc61
JRT
654 * Now you can specify which policies to disable with the
655 "## no critic" pseudo-pragmas. This feature is still
656 experimental. See docs for details.
55ae7242
JRT
657 * perlcritic's directory searching now skips backup files, such
658 as *.swp, *.bak and *~. It also ignores version control system
659 directories, and the blib directory in module build directories.
9b32fc61 660
520d94ce
JRT
661 Bug Fixes:
662 * 18386: Bad example in POD for Documentation::RequirePodSections
496afbe0 663 * 18670: Test failure if Perl::Tidy is not installed
f3ce038e 664 * 18698: Policy idea ProhibitUniversalFunctions (see New Policies)
520d94ce
JRT
665 * RequireInterpolationOfMetachars falsely hit strings like 'foo=s@'
666 which are commonly used with Getopt::Long.
667
7d2c51b1 668 New Policies:
15bfb880
JRT
669 * BuiltinFunctions::ProhibitUniversalCan (by Chris Dolan)
670 * BuiltinFunctions::ProhibitUniversalIsa (by Chris Dolan)
520d94ce 671
55ae7242
JRT
672 Miscellanea:
673 * All spurrious options for `perlcritic` are now fatal.
a5eaeaa4 674 * Changed several of the -verbose formats to be more readable.
55ae7242
JRT
675 * Explicit -severity option now overrides -[12345] shortcuts instead
676 of being the other way around.
677
678
a5eaeaa4 679
be8538d2 680[0.15] Released on 2006-03-26
df092b01 681
871ec032
JRT
682 Bug Fixes:
683 * 17964: Insists my code is not tidy (may not be fixed for all cases)
df092b01 684
be8538d2 685[0.14_02] Released on 2006-03-19
302ea648 686
b87b00dd
JRT
687 Bug Fixes:
688 * 15653: False positive in OneArgSelect (fixed for real this time)
689
5457cbc2 690 New Policies:
e2ec15ae 691 * ClassHierarchies::ProhibitAutoloading
c169e1bd 692 * Documentation::RequirePodSections
15bfb880 693 * InputOutput::RequireBracedFileHandleWithPrint
5457cbc2 694 * ValuesAndExpressions::ProhibitMixedBooleanOperators
2ec37fe2 695 * Variables::RequireInitializationForLocalVars
5457cbc2 696
be8538d2 697[0.14_01] Released on 2006-03-05
fc1186f9 698
20ceb4a0 699 Bug Fixes:
a7753069 700 * 14731: False positive: Builtin function called with parens
20ceb4a0
JRT
701 * 17554: False positive in CodeLayout::RequireTrailingCommas
702
fc1186f9
CD
703 New Policies:
704 * ClassHierarchies::ProhibitExplicitISA
013195d6 705 * InputOutput::ProhibitReadlineInForLoop
f8966b15
JRT
706 * Miscellanea::ProhibitFormats
707 * Miscellanea::ProhibitTies
5cb27b1a 708 * Variables::ProhibitConditionalDeclarations
fc1186f9 709
be8538d2 710[0.14] Released on 2006-01-29
f4814c30 711
06d28f35
JRT
712 More documentation edits.
713
b672fd9e 714 New Policies:
8de08c2e 715 * Documentation::RequirePodAtEnd
38ce10c1 716 * Subroutines::ProtectPrivateSubs
b672fd9e 717 * Variables::ProhibitMatchVars
38ce10c1 718 * Variables::ProtectPrivateVars
b672fd9e 719
06d28f35
JRT
720 Bug Fixes:
721 * 15295: "## no critic" pragmas too aggresive on compound statements.
8de08c2e 722 * t/01_config.t failed in the presence of third-party policies
9ad4bbe8
JRT
723
724[0.13_05] Not released
725
726 More documentation edits.
727
2e3c7424
JRT
728 Implemented workaround for failing pod_coverage tests.
729
9ad4bbe8
JRT
730 Bug Fixes:
731 * 16906: tr/// created false-postives with RegularExpression polices.
f4814c30 732
be8538d2 733[0.13_04] Released on 2005-12-31
a2969b87
JRT
734
735 Moved DEVELOPER.pod file into the Perl/Critic dir.
736
f4814c30
JRT
737 More documentation edits.
738
e2ec15ae 739[0.13_03] Released on 20051230
70d719da 740
2d119dc9
JRT
741 perlcritic now prints 'source OK' if it doesn't find any
742 violations. This gives folks a warm fuzzy feeling.
743
744 Tweaked some test cases that were failing on my Solaris
745 environment at work.
746
be8538d2 747[0.13_02] Released on 2005-12-29
2d119dc9
JRT
748
749 Fixed Config to recognize fully-qualified module names in the
750 .perlcriticrc file.
751
752 Various documentation edits.
70d719da 753
be8538d2 754[0.13_01] Released on 2005-12-28
5635926d
JRT
755
756 Replaced 'priority' concept with 'severity'. Now each Policy module
757 has a predefined severity level ranging from 1 to 5. By default,
758 perlcritic only reports the most severe violations. You can adjust
759 the severity threshold at the command line, and you can change
760 the severity for any Policy using the config file.
761
c5a01eb8
JRT
762 Chris implemented the applies_to() mechanism, which allows each Policy
763 class to declare the types of PPI elements that it wants to examine.
5635926d
JRT
764 When traversing the document, Perl::Critic invokes the Policy only
765 for elements that are of the correct type. This improves performance
766 by about 33%.
767
768 Perl::Critic now uses a Plugin architecture to automatically
769 discover Policy modules. So if you have custom Policies, all you
770 have to do is install them in the Perl::Critic::Policy namespace --
771 no need to add anything to your .perlcriticrc file. If you write
772 policies in a different namespace, you can configure that too. See
773 the Perl::Critic::Config docs for details.
774
775 New Policies:
776 * Modules::RequireEndWithOne
777 * NamingConventions::ProhibitAmbiguousNames
c5a01eb8 778 * References::ProhibitDoubleSigils
5635926d 779 * Subroutines::RequireFinalReturn
c2f9579b
JRT
780 * Subroutines::ProhibitAmpersandSigils
781 * Subroutines::ProhibitExcessComplexity
917d9f11
JRT
782 * TestingAndDebugging::ProhibitNoStrict
783 * TestingAndDebugging::ProhibitNoWarnings
5635926d
JRT
784
785 Bug Fixes:
786 * 15101: Plugin architecture improves support for 3rd-party code
787 * 16319: Fixed incorrect PBP page number in ProhibitBarwordFilehandle
788 * 16321: Lists of empty quotes are now allowed by ProhibitQuotedWordLists
789 * 16288: Empty lists caused a fatal error RequireTrailingCommas
790 * 15653: Fixed false positive in OneArgSelect.
496afbe0
ES
791
792[0.13] Released on 2005-10-31
59b05e08 793
839f3ee0 794 Official release of 0.12_03. No code major changes.
59b05e08
JRT
795
796[0.12_03] Not released
797
798 Renamed -Policy option to -include. Added -exclude to give the
799 opposite effect.
800
801 Refactored constructor of Perl::Critic. Now, most of the work
802 is delegated to Perl::Critic::Config. I'm not sure I like how
803 this turned out, but we'll see how it goes.
804
805 Renamed some Policy modules to be a bit more comprehensible. Note
496afbe0
ES
806 that you may need to change your .perlcriticrc file accordingly.
807 I also suggest removing your current Perl::Critic installation
59b05e08
JRT
808 before installing this one.
809
810 Name Changes:
811 * ProhibitUnpackagedCode => RequireExplicitPackage
812 * RequireQuotedWords => ProhibitQuotedWordLists
813
814 Improved error message when Perl::Critic dies because PPI can't
815 parsee the input code.
816
817 Changed output of -help to be more terse.
818
819 Edited POD.
820
821[0.12_02] Not released
822
496afbe0 823 Added -Policy option to perlcritic. The idea is to provide a
59b05e08
JRT
824 compact interface for selecting Policy modules at the command-line.
825 This feature is experimental and subject to change.
826
496afbe0 827 Added a warning message if -verbose value looks strange. In most
59b05e08
JRT
828 applications, the -verbose option does not require a value, so people
829 might be puzzled when they write 'perlcritic -verbose my_file.pm' and
830 nothing seems to happen.
831
832 Command-line options to perlcritic are now case-sensitive. This
833 makes it easier to abbreviate options that start with the same letters
834 (e.g. 'Version' and 'verbose')
835
496afbe0 836 Fixed the new Policy modules that were misnamed and misplaced in the
59b05e08
JRT
837 previous distribution.
838
839[0.12_01] Not released
840
496afbe0 841 Rewrote some of the ControlStructures and BuiltinFunction
59b05e08
JRT
842 policies to be simpler (and probably a little faster).
843
844 Edited POD. Fixed some typos. Added PREREQUISITES section
845 to Perl::Critic documentation.
846
847 Fixed the -verbose FORMAT option so that you can put metachars
848 in the FORMAT specification. If using perlcritic, be careful to
849 protect them from getting munged by the shell first.
850
851 Replaced ProhibitRequireStatements with RequireBarewordIncludes
852 module. Courtesy of Chris Dolan <cdolan@cpan.org>
853
854 Added configuration to ProhibitInterpolationOfLiterals so that
855 certain flavors of quotes can be exempt. This is for folks who
856 have configured their editor to use special syntax highlighting
857 for certain kinds of strings (SQL, for example).
858
496afbe0
ES
859 perlcritic now accepts multiple file arguments, so now you can
860 critique your entire distribution in one shot. As a result, the
59b05e08
JRT
861 output-formats have changed slightly.
862
863 New Policy modules:
864 * BuiltinFunctions::ProhibitLvalueSubstr
865 * BuiltinFunctions::ProhibitSleepViaSelect
866 * ClassHierarchies::ProhibitOneArgBless
867 * CodeLayout::RequireTrailingCommas
868 * CodeLayout::RequireQuotedWordLists
869 * InputOutput::ProhibitTwoArgOpen
870 * InputOutput::ProhibitOneArgSelect
871 * InputOutput::ProhibitBarewordFileHandles
872 * Miscellanea::RequireRcsKeywords
873 * Modules::RequireVersionVar
874 * RegularExpressions::RequireExtendedFormatting
875 * RegularExpressions::RequireLineBoundaryMatching
876
496afbe0 877
59b05e08
JRT
878 Bug fixes:
879 14923: 'require' is now permitted. See RequireBarewordIncludes.
880 15022: Fixed false-positives when keywords are used as hash keys.
881 15023: Fixed spurious Violations by removing magic shebang.
882 15031: Fixed spelling mistakes (and probably added some new ones).
883 15233: Postfix 'if' is now allowed with 'die', 'croak', etc.
884
be8538d2 885[0.12] Released 2005-10-10
59b05e08 886
496afbe0 887 Redesigned the 'verbose' feature. Now the output format
59b05e08 888 can be user-defined using a sprintf-like specification.
496afbe0 889 perlciritc also has a predefined output format that is
59b05e08
JRT
890 compatible with grep mode in editors like vim and emacs.
891
892 'return' is now exempt from ProhibitParensWithBuiltins. I may
893 extend this exemption to all unary functions.
894
496afbe0 895 Edited POD. Added a super brief description of each policy
59b05e08
JRT
896 in the main Perl::Critic documentation. Added details about
897 editor integration.
898
899 Additional Prerequisites:
900 * String::Format
901
902[0.11] Not released
903
904 The internal dynamics and API of Perl::Critic have changed
905 considerably. The result is a 300% increase in performance.
906 See the POD in Perl::Critic::Policy for details.
907
908 New Features:
909 * Added -verbose option to put more stuff in the output. In the
910 extreme, you can get the POD from Policy attached to each
911 and every violation.
912
913 Additional Prerequisites:
914 * IO::String
915 * Pod::PlainText
916
be8538d2 917[0.10] Released 2005-10-05
59b05e08
JRT
918
919 Fixed stupid bug in newest Policy modules. They were returning
920 PPI objects instead of Perl::Critic::Violation objects. Doh!
921
922 Fixed test scripts to prevent failures if the user already has a
923 .perlcriticrc file.
924
925 'ProhibitHardTabs' now allows leading tabs by default.
926
927 Put the Changes file in reverse-chronological order, so the most
928 recent stuff is easy to find at the top of the file
929
be8538d2 930[0.09] Released 2005-10-04
59b05e08
JRT
931
932 Fixed several bugs:
933 * 14810: Now you are allowed to create your own 'import' function,
934 since this is frequently done with fancy modules.
935 * 14817: Parens, brackets, and braces are now excluded from
936 'ProhibitNoisyQuotes' since they look better in quotes anyway.
937 * 14787: $1..$9 and '_' are exempt from ProhibitPunctuationVars
938 * 14899: Object methods with the same name as a built-in can
939 be called with parens (ProhibitParensWithBuiltins).
940 * 14901: Normalized the exit status of perlcritic to 0, 1, or 2.
941 See documentation for explanation.
942 * 14855: Partially fixed home directory discovery. Still not
943 completely portable, but at least doesn't create warnings.
944
945 New features:
946 * 14734: Limit for number separators is now configurable
947
948 New Policy modules:
949 * CodeLayout::ProhibitHardTabs
950 * ControlStructures::ProhibitUnlessBlocks
951 * ControlStructures::ProhibitUntilBlocks
952 * ControlStructures::ProhibitCStyleForLoops
953
954 Changed the syntax for the magic comments. Adam had the
955 idea of using a pragma-like notation. I liked it.
956
be8538d2 957[0.08_2] Released 2005-09-27
59b05e08
JRT
958
959 Fixed problems with Perl::Critic::Config that caused File::Spec
960 to emit 'uninitialized value' warnings during the build.
961
962 Added 1 Policy module contributed by Graham TerMarsch
963
964 Switched from File::Spec::Functions to plain File::Spec because
965 I think its usage is more common.
966
967 Removed 'FindBin' from the test files so I can be sure that the
968 right libraries are getting loaded. This means I'll have to
969 use the -l option with C<prove>.
970
971 Edited more POD.
972
973[0.08_01] Not released
974
975 Fixed "ProhibitParensWithBuiltins" to allow parens to be used with
976 object method calls that have the same name as a builtin functions.
977
496afbe0 978 Introduced magical comments that allow developers to configure
59b05e08
JRT
979 Perl::Critic on-the-fly from within their code.
980
981 Added META.yml files and POD tests to the build. I did this
982 mostly just to boost the Kwalitee score on CPANTS.
983
984 Switched from "Config::Std" to "Config::Tiny" because it doesn't
985 require those fancy Damian modules that don't seem to work on
986 some older versions of Perl.
987
be8538d2 988[0.07] Released on 2005-09-21
59b05e08 989
496afbe0 990 Fixed bugs in the ProhibitCascadingIfElse policy.
59b05e08
JRT
991
992 Added ProhibitExplicitReturnUndef policy
993
994 Made ProhibitUnpackagedCode configurable so you can exempt scripts,
995 which typically don't have an explicit 'package' statement.
996
997 ProhibitPackageVars policy now exempts vars in ALL_CAPS. This
998 is to permit common package variables like @EXPORT and $VERSION.
999
496afbe0 1000 Renamed "ProhibitStringyGrep and "ProhibitStringyMap" because
59b05e08 1001 the so-called string form doesn't really exist. Now called
496afbe0 1002 "RequireBlockGrep" and "RequireBlockMap"
59b05e08 1003
496afbe0 1004 Corrected documentation on defining Policy names within the
59b05e08
JRT
1005 configuration file. This still isn't very clear and needs
1006 to be rewritten.
1007
496afbe0 1008 Perl::Critic now requires PPI version 1.003, which has a few bug
59b05e08
JRT
1009 fixes of its own.
1010
1011 Rewrite some code just to make Perl::Critic more self-compliant.
1012
1013 Added test cases to verify the configuration functionality. These
1014 are not completely thorough and need more work.
1015
be8538d2 1016[0.06] Released on 2005-09-17
59b05e08 1017
496afbe0
ES
1018 Now called 'Perl::Critic'.
1019
1020 Added 4 new policy modules.
59b05e08 1021
496afbe0 1022 Fixed bugs in build process.
59b05e08
JRT
1023
1024 Added support for Module::Build.
1025
be8538d2 1026[0.05] Released on 2005-09-17
59b05e08
JRT
1027
1028 End of 'Perl::Review' releases. I have changed the name to
1029 'Perl::Critic' to avoid possible confusion with "The Perl Review"
1030 magazine.
1031
be8538d2 1032[0.04] Released on 2005-09-14
59b05e08
JRT
1033
1034 Version 0.03 was a bust because I uploaded the wrong tarball to PAUSE.
1035
be8538d2 1036[0.03] Released on 2005-09-13.
59b05e08 1037
496afbe0 1038 Fixed some POD links.
59b05e08
JRT
1039
1040 Removed test cases for missing policy module.
1041
be8538d2 1042[0.02] Released on 2005-09-13.
59b05e08
JRT
1043
1044 Major overhaul based on feedback from Perl community.
1045
1046 Factored coding standards into separate modules (known as
1047 Policies). The idea here is to allow other developers to easily
1048 contribute additional coding standards.
1049
1050 Reworked Perl::Review into a simple engine for loading and running
1051 Policy modules.
1052
1053 Gave perlreview a command-line interface and configuration file
1054 for selecting which Policy modules to use.
1055
be8538d2 1056[0.01] Released on 2005-08-16.
59b05e08
JRT
1057
1058 Initial version.
a69e1617
ES
1059
1060##############################################################################
1061# $URL$
1062# $Date$
1063# $Author$
1064# $Revision$
1065##############################################################################