Login
Added tags support.
[gknop/Perl-Critic.git] / Changes
CommitLineData
02b7b45d
JRT
1#######################################################################
2# $URL$
3# $Date$
4# $Author$
5# $Revision$
491e8b78 6#######################################################################
02b7b45d 7
6a1cac48 8[0.18] Released on 20060716
0c43b2ce
JRT
9
10 Bug Fixes:
11 * 14855: Home discovery is dangerously naive.
12 * 20060: Incorrect page numbers in ProhibitLeadingZeros
13 and RequireNumberSeparator policies.
14 * 20068: .perlrc file - inconsistent documentation
15 * 20254: "use vars qw(@EXPORT_OK)" not recognized
02b99701
JRT
16 * 20463: No-case heredoc terminator incorrectly detected as lower case.
17 * ProhibitOneArgBless doesn't understand "bless {} => $class;"
18 * ProhibitExcessComplexity doesn't count 'while' and 'until' stmnts
19 * ProhibitLeadingZeros was falsely hits '.0456'
0c43b2ce
JRT
20
21 Enhancements:
22 * If File::HomeDir is available, we use it to locate the
23 .perlcriticrc file. This should help make Perl::Critic
24 more portable to Win32 platforms. If File::HomeDir is
25 not installed, we resort to looking at the usual
26 environment variables.
27
6a1cac48
JRT
28 Other Stuff:
29 * Added "perlcritic.el", which is a super-cool emacs minor-mode
30 that runs perl-critic on the current buffer and returns the
31 results in a sexy hot-linked "compiler" window. You can run
32 it on demand, or have it run automatically every time you
33 save the buffer. You can find this in the extras/ directory.
34 Thanks to Josh ben Jore for contributing this.
35
36 * Moved "Perl::Critic::TestUtils" into the installed build. This
37 module is only used for unit-testing Perl::Critic, but we
38 are putting it in the installation so folks who want to
39 extend Perl::Critic can make use of it.
40
491e8b78 41[0.17] Released on 20060613
08624963
JRT
42
43 Bug Fixes:
491e8b78
JRT
44 * 19836: Perl-Critic0.16 fails tests during install. This was
45 caused by a bug in version 3.01 of Module::Pluggable. See
46 http://rt.cpan.org/Ticket/Display.html?id=19857 for details.
47 * Fixed bug in no-critic pragma parser.
08624963 48
9c9fbe13
CD
49 New Policies:
50 * ValuesAndExpressions::ProhibitEscapedCharacters
ba619093 51 * BuiltinFunctions::RequireSimpleSortBlock
9c9fbe13 52
491e8b78
JRT
53 Enhancements:
54 * Perl::Critic can export critique() as a static function. This
55 may appeal to folks who dislike the object-oriented interface.
56
c46b6238 57[0.16] Released on 20060514
15bfb880 58
c46b6238 59 Production release.
15bfb880 60
c46b6238
JRT
61 Enhancements:
62 * Perl::Critic->critique() now accepts a PPI::Document as the
63 argument. This feature creates an additional dependency on
64 Scalar::Util, but that shouldn't be a problem because it is
65 included with List::Util, which we already use.
15bfb880 66
c46b6238
JRT
67 Miscellanea:
68 * Increased PPI dependency from v1.110 to v1.112
15bfb880 69
977dbe11 70[0.15_03] Released on 20060507
4f7da5f8
JRT
71
72 Bug Fixes:
73 * The "## no critic" feature is now implemented without eval-ing
74 the code. This keeps Perl::Critic pure and safe :)
15bfb880 75 * 19082: Page number for AUTOLOAD is incorrect
4f7da5f8
JRT
76
77 New Policies:
15bfb880 78 * ControlStructures::ProhibitUnreachableCode (by Peter Guzis)
977dbe11 79 * Modules::ProhibitAutomaticExportation
c5e3466b 80 * ValuesAndExpressions::ProhibitVersionStrings
4f7da5f8
JRT
81
82[0.15_02] Released on 20060426
1bef6e21
JRT
83
84 Bug Fixes:
85 * Reimplemented the '##no critic' pragmas to have effect on the
86 line where the violation is reported, not on the line where
87 the candidate element lives. This is because some policies
88 may report violations that are nowhere near the element that
89 is being evaluated.
90 * RequireUseStrict, RequireUseWarnings, and RequireExplcitPackage
91 all emit violations for _every_ statement that violates the
92 Policy. This closes a loophole that allowed you to circumvent
93 the Policy by using '## no critic' on just the first statement
94 that violated the policy.
95 * Fixed the workaround for the magic shebang that is inserted
96 by EU::MM and M::B. This had stopped working around version 13.
97 * Fixed -noprofile option on 'perlcritic'. This also had stopped
98 working at some point.
350f4137 99
55ae7242 100[0.15_01] Released on 20060416
520d94ce
JRT
101
102 Enhancements:
103 * Added diagnostic messages if the .perlcriticrc contains entries
f3ce038e 104 for Policy modules that don't seem to exist.
9b32fc61
JRT
105 * Now you can specify which policies to disable with the
106 "## no critic" pseudo-pragmas. This feature is still
107 experimental. See docs for details.
55ae7242
JRT
108 * perlcritic's directory searching now skips backup files, such
109 as *.swp, *.bak and *~. It also ignores version control system
110 directories, and the blib directory in module build directories.
9b32fc61 111
520d94ce
JRT
112 Bug Fixes:
113 * 18386: Bad example in POD for Documentation::RequirePodSections
9b32fc61 114 * 18670: Test failure if Perl::Tidy is not installed
f3ce038e 115 * 18698: Policy idea ProhibitUniversalFunctions (see New Policies)
520d94ce
JRT
116 * RequireInterpolationOfMetachars falsely hit strings like 'foo=s@'
117 which are commonly used with Getopt::Long.
118
7d2c51b1 119 New Policies:
15bfb880
JRT
120 * BuiltinFunctions::ProhibitUniversalCan (by Chris Dolan)
121 * BuiltinFunctions::ProhibitUniversalIsa (by Chris Dolan)
520d94ce 122
55ae7242
JRT
123 Miscellanea:
124 * All spurrious options for `perlcritic` are now fatal.
a5eaeaa4 125 * Changed several of the -verbose formats to be more readable.
55ae7242
JRT
126 * Explicit -severity option now overrides -[12345] shortcuts instead
127 of being the other way around.
128
129
a5eaeaa4 130
df092b01
JRT
131[0.15] Released on 20060326
132
133 Production release.
871ec032
JRT
134
135 Bug Fixes:
136 * 17964: Insists my code is not tidy (may not be fixed for all cases)
df092b01 137
e2ec15ae 138[0.14_02] Released on 20060319
302ea648 139
b87b00dd
JRT
140 Bug Fixes:
141 * 15653: False positive in OneArgSelect (fixed for real this time)
142
5457cbc2 143 New Policies:
e2ec15ae 144 * ClassHierarchies::ProhibitAutoloading
c169e1bd 145 * Documentation::RequirePodSections
15bfb880 146 * InputOutput::RequireBracedFileHandleWithPrint
5457cbc2 147 * ValuesAndExpressions::ProhibitMixedBooleanOperators
2ec37fe2 148 * Variables::RequireInitializationForLocalVars
5457cbc2 149
e2ec15ae 150[0.14_01] Released on 20060305
fc1186f9 151
20ceb4a0 152 Bug Fixes:
a7753069 153 * 14731: False positive: Builtin function called with parens
20ceb4a0
JRT
154 * 17554: False positive in CodeLayout::RequireTrailingCommas
155
fc1186f9
CD
156 New Policies:
157 * ClassHierarchies::ProhibitExplicitISA
013195d6 158 * InputOutput::ProhibitReadlineInForLoop
f8966b15
JRT
159 * Miscellanea::ProhibitFormats
160 * Miscellanea::ProhibitTies
5cb27b1a 161 * Variables::ProhibitConditionalDeclarations
fc1186f9 162
e2ec15ae 163[0.14] Released on 20060129
f4814c30 164
06d28f35
JRT
165 More documentation edits.
166
b672fd9e 167 New Policies:
8de08c2e 168 * Documentation::RequirePodAtEnd
38ce10c1 169 * Subroutines::ProtectPrivateSubs
b672fd9e 170 * Variables::ProhibitMatchVars
38ce10c1 171 * Variables::ProtectPrivateVars
b672fd9e 172
06d28f35
JRT
173 Bug Fixes:
174 * 15295: "## no critic" pragmas too aggresive on compound statements.
8de08c2e 175 * t/01_config.t failed in the presence of third-party policies
9ad4bbe8
JRT
176
177[0.13_05] Not released
178
179 More documentation edits.
180
2e3c7424
JRT
181 Implemented workaround for failing pod_coverage tests.
182
9ad4bbe8
JRT
183 Bug Fixes:
184 * 16906: tr/// created false-postives with RegularExpression polices.
f4814c30 185
e2ec15ae 186[0.13_04] Released on 20051231
a2969b87
JRT
187
188 Moved DEVELOPER.pod file into the Perl/Critic dir.
189
f4814c30
JRT
190 More documentation edits.
191
e2ec15ae 192[0.13_03] Released on 20051230
70d719da 193
2d119dc9
JRT
194 perlcritic now prints 'source OK' if it doesn't find any
195 violations. This gives folks a warm fuzzy feeling.
196
197 Tweaked some test cases that were failing on my Solaris
198 environment at work.
199
e2ec15ae 200[0.13_02] Released on 20051229
2d119dc9
JRT
201
202 Fixed Config to recognize fully-qualified module names in the
203 .perlcriticrc file.
204
205 Various documentation edits.
70d719da 206
e2ec15ae 207[0.13_01] Released on 20051228
5635926d
JRT
208
209 Replaced 'priority' concept with 'severity'. Now each Policy module
210 has a predefined severity level ranging from 1 to 5. By default,
211 perlcritic only reports the most severe violations. You can adjust
212 the severity threshold at the command line, and you can change
213 the severity for any Policy using the config file.
214
c5a01eb8
JRT
215 Chris implemented the applies_to() mechanism, which allows each Policy
216 class to declare the types of PPI elements that it wants to examine.
5635926d
JRT
217 When traversing the document, Perl::Critic invokes the Policy only
218 for elements that are of the correct type. This improves performance
219 by about 33%.
220
221 Perl::Critic now uses a Plugin architecture to automatically
222 discover Policy modules. So if you have custom Policies, all you
223 have to do is install them in the Perl::Critic::Policy namespace --
224 no need to add anything to your .perlcriticrc file. If you write
225 policies in a different namespace, you can configure that too. See
226 the Perl::Critic::Config docs for details.
227
228 New Policies:
229 * Modules::RequireEndWithOne
230 * NamingConventions::ProhibitAmbiguousNames
c5a01eb8 231 * References::ProhibitDoubleSigils
5635926d 232 * Subroutines::RequireFinalReturn
c2f9579b
JRT
233 * Subroutines::ProhibitAmpersandSigils
234 * Subroutines::ProhibitExcessComplexity
917d9f11
JRT
235 * TestingAndDebugging::ProhibitNoStrict
236 * TestingAndDebugging::ProhibitNoWarnings
5635926d
JRT
237
238 Bug Fixes:
239 * 15101: Plugin architecture improves support for 3rd-party code
240 * 16319: Fixed incorrect PBP page number in ProhibitBarwordFilehandle
241 * 16321: Lists of empty quotes are now allowed by ProhibitQuotedWordLists
242 * 16288: Empty lists caused a fatal error RequireTrailingCommas
243 * 15653: Fixed false positive in OneArgSelect.
244
e2ec15ae 245[0.13] Released on 20051031
59b05e08
JRT
246
247 Production release of 0.12_03. No code major changes.
248
249[0.12_03] Not released
250
251 Renamed -Policy option to -include. Added -exclude to give the
252 opposite effect.
253
254 Refactored constructor of Perl::Critic. Now, most of the work
255 is delegated to Perl::Critic::Config. I'm not sure I like how
256 this turned out, but we'll see how it goes.
257
258 Renamed some Policy modules to be a bit more comprehensible. Note
259 that you may need to change your .perlcriticrc file accordingly.
260 I also suggest removing your current Perl::Critic installation
261 before installing this one.
262
263 Name Changes:
264 * ProhibitUnpackagedCode => RequireExplicitPackage
265 * RequireQuotedWords => ProhibitQuotedWordLists
266
267 Improved error message when Perl::Critic dies because PPI can't
268 parsee the input code.
269
270 Changed output of -help to be more terse.
271
272 Edited POD.
273
274[0.12_02] Not released
275
276 Added -Policy option to perlcritic. The idea is to provide a
277 compact interface for selecting Policy modules at the command-line.
278 This feature is experimental and subject to change.
279
280 Added a warning message if -verbose value looks strange. In most
281 applications, the -verbose option does not require a value, so people
282 might be puzzled when they write 'perlcritic -verbose my_file.pm' and
283 nothing seems to happen.
284
285 Command-line options to perlcritic are now case-sensitive. This
286 makes it easier to abbreviate options that start with the same letters
287 (e.g. 'Version' and 'verbose')
288
289 Fixed the new Policy modules that were misnamed and misplaced in the
290 previous distribution.
291
292[0.12_01] Not released
293
294 Rewrote some of the ControlStructures and BuiltinFunction
295 policies to be simpler (and probably a little faster).
296
297 Edited POD. Fixed some typos. Added PREREQUISITES section
298 to Perl::Critic documentation.
299
300 Fixed the -verbose FORMAT option so that you can put metachars
301 in the FORMAT specification. If using perlcritic, be careful to
302 protect them from getting munged by the shell first.
303
304 Replaced ProhibitRequireStatements with RequireBarewordIncludes
305 module. Courtesy of Chris Dolan <cdolan@cpan.org>
306
307 Added configuration to ProhibitInterpolationOfLiterals so that
308 certain flavors of quotes can be exempt. This is for folks who
309 have configured their editor to use special syntax highlighting
310 for certain kinds of strings (SQL, for example).
311
312 perlcritic now accepts multiple file arguments, so now you can
313 critique your entire distribution in one shot. As a result, the
314 output-formats have changed slightly.
315
316 New Policy modules:
317 * BuiltinFunctions::ProhibitLvalueSubstr
318 * BuiltinFunctions::ProhibitSleepViaSelect
319 * ClassHierarchies::ProhibitOneArgBless
320 * CodeLayout::RequireTrailingCommas
321 * CodeLayout::RequireQuotedWordLists
322 * InputOutput::ProhibitTwoArgOpen
323 * InputOutput::ProhibitOneArgSelect
324 * InputOutput::ProhibitBarewordFileHandles
325 * Miscellanea::RequireRcsKeywords
326 * Modules::RequireVersionVar
327 * RegularExpressions::RequireExtendedFormatting
328 * RegularExpressions::RequireLineBoundaryMatching
329
330
331 Bug fixes:
332 14923: 'require' is now permitted. See RequireBarewordIncludes.
333 15022: Fixed false-positives when keywords are used as hash keys.
334 15023: Fixed spurious Violations by removing magic shebang.
335 15031: Fixed spelling mistakes (and probably added some new ones).
336 15233: Postfix 'if' is now allowed with 'die', 'croak', etc.
337
e2ec15ae 338[0.12] Released 20051010
59b05e08
JRT
339
340 Redesigned the 'verbose' feature. Now the output format
341 can be user-defined using a sprintf-like specification.
342 perlciritc also has a predefined output format that is
343 compatible with grep mode in editors like vim and emacs.
344
345 'return' is now exempt from ProhibitParensWithBuiltins. I may
346 extend this exemption to all unary functions.
347
348 Edited POD. Added a super brief description of each policy
349 in the main Perl::Critic documentation. Added details about
350 editor integration.
351
352 Additional Prerequisites:
353 * String::Format
354
355[0.11] Not released
356
357 The internal dynamics and API of Perl::Critic have changed
358 considerably. The result is a 300% increase in performance.
359 See the POD in Perl::Critic::Policy for details.
360
361 New Features:
362 * Added -verbose option to put more stuff in the output. In the
363 extreme, you can get the POD from Policy attached to each
364 and every violation.
365
366 Additional Prerequisites:
367 * IO::String
368 * Pod::PlainText
369
e2ec15ae 370[0.10] Released 20051005
59b05e08
JRT
371
372 Fixed stupid bug in newest Policy modules. They were returning
373 PPI objects instead of Perl::Critic::Violation objects. Doh!
374
375 Fixed test scripts to prevent failures if the user already has a
376 .perlcriticrc file.
377
378 'ProhibitHardTabs' now allows leading tabs by default.
379
380 Put the Changes file in reverse-chronological order, so the most
381 recent stuff is easy to find at the top of the file
382
e2ec15ae 383[0.09] Released 20051004
59b05e08
JRT
384
385 Fixed several bugs:
386 * 14810: Now you are allowed to create your own 'import' function,
387 since this is frequently done with fancy modules.
388 * 14817: Parens, brackets, and braces are now excluded from
389 'ProhibitNoisyQuotes' since they look better in quotes anyway.
390 * 14787: $1..$9 and '_' are exempt from ProhibitPunctuationVars
391 * 14899: Object methods with the same name as a built-in can
392 be called with parens (ProhibitParensWithBuiltins).
393 * 14901: Normalized the exit status of perlcritic to 0, 1, or 2.
394 See documentation for explanation.
395 * 14855: Partially fixed home directory discovery. Still not
396 completely portable, but at least doesn't create warnings.
397
398 New features:
399 * 14734: Limit for number separators is now configurable
400
401 New Policy modules:
402 * CodeLayout::ProhibitHardTabs
403 * ControlStructures::ProhibitUnlessBlocks
404 * ControlStructures::ProhibitUntilBlocks
405 * ControlStructures::ProhibitCStyleForLoops
406
407 Changed the syntax for the magic comments. Adam had the
408 idea of using a pragma-like notation. I liked it.
409
e2ec15ae 410[0.08_2] Released 20050927
59b05e08
JRT
411
412 Fixed problems with Perl::Critic::Config that caused File::Spec
413 to emit 'uninitialized value' warnings during the build.
414
415 Added 1 Policy module contributed by Graham TerMarsch
416
417 Switched from File::Spec::Functions to plain File::Spec because
418 I think its usage is more common.
419
420 Removed 'FindBin' from the test files so I can be sure that the
421 right libraries are getting loaded. This means I'll have to
422 use the -l option with C<prove>.
423
424 Edited more POD.
425
426[0.08_01] Not released
427
428 Fixed "ProhibitParensWithBuiltins" to allow parens to be used with
429 object method calls that have the same name as a builtin functions.
430
431 Introduced magical comments that allow developers to configure
432 Perl::Critic on-the-fly from within their code.
433
434 Added META.yml files and POD tests to the build. I did this
435 mostly just to boost the Kwalitee score on CPANTS.
436
437 Switched from "Config::Std" to "Config::Tiny" because it doesn't
438 require those fancy Damian modules that don't seem to work on
439 some older versions of Perl.
440
e2ec15ae 441[0.07] Released on 20050921
59b05e08
JRT
442
443 Fixed bugs in the ProhibitCascadingIfElse policy.
444
445 Added ProhibitExplicitReturnUndef policy
446
447 Made ProhibitUnpackagedCode configurable so you can exempt scripts,
448 which typically don't have an explicit 'package' statement.
449
450 ProhibitPackageVars policy now exempts vars in ALL_CAPS. This
451 is to permit common package variables like @EXPORT and $VERSION.
452
453 Renamed "ProhibitStringyGrep and "ProhibitStringyMap" because
454 the so-called string form doesn't really exist. Now called
455 "RequireBlockGrep" and "RequireBlockMap"
456
457 Corrected documentation on defining Policy names within the
458 configuration file. This still isn't very clear and needs
459 to be rewritten.
460
461 Perl::Critic now requires PPI version 1.003, which has a few bug
462 fixes of its own.
463
464 Rewrite some code just to make Perl::Critic more self-compliant.
465
466 Added test cases to verify the configuration functionality. These
467 are not completely thorough and need more work.
468
e2ec15ae 469[0.06] Released on 20050917
59b05e08
JRT
470
471 Now called 'Perl::Critic'.
472
473 Added 4 new policy modules.
474
475 Fixed bugs in build process.
476
477 Added support for Module::Build.
478
e2ec15ae 479[0.05] Released on 20050917
59b05e08
JRT
480
481 End of 'Perl::Review' releases. I have changed the name to
482 'Perl::Critic' to avoid possible confusion with "The Perl Review"
483 magazine.
484
e2ec15ae 485[0.04] Released on 20050914
59b05e08
JRT
486
487 Version 0.03 was a bust because I uploaded the wrong tarball to PAUSE.
488
e2ec15ae 489[0.03] Released on 20050913.
59b05e08
JRT
490
491 Fixed some POD links.
492
493 Removed test cases for missing policy module.
494
e2ec15ae 495[0.02] Released on 20050913.
59b05e08
JRT
496
497 Major overhaul based on feedback from Perl community.
498
499 Factored coding standards into separate modules (known as
500 Policies). The idea here is to allow other developers to easily
501 contribute additional coding standards.
502
503 Reworked Perl::Review into a simple engine for loading and running
504 Policy modules.
505
506 Gave perlreview a command-line interface and configuration file
507 for selecting which Policy modules to use.
508
e2ec15ae 509[0.01] Released on 20050816.
59b05e08
JRT
510
511 Initial version.
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531