- New upstream release 1.128
Bug Fixes
- PPI misparsing a module caused an incorrect "Must end with a recognizable
true value"; this is fixed by upgrading to PPI 1.224 (GH#696, GH#607)
- A test would fail under the upcoming Perl 5.26 that omits the current
directory from @INC
- Fixed an invalid test in the RequireBarewordsIncludes test (GH#751)
- If an element contained blank lines then the source "%r" displayed for a
violation was wrong (GH#702, GH#734)
Dependencies
- Perl::Critic now requires PPI 1.224; PPI is the underlying Perl parser on
which Perl::Critic is built, and 1.224 introduces many parsing fixes such
as:
- Fixes for dot-in-@INC
- Parse left side of => as bareword even if it looks like a keyword or op
- $::x now works
- Higher accuracy when deciding whether certain characters are operators or
variable type casts (*&% etc.)
- Subroutine attributes parsed correctly
Performance Enhancements
- Sped up BuiltinFunctions::ProhibitUselessTopic ~7% (GH#656)
Documentation
- Fixed incorrect explanation of capture variables in
ProhibitCaptureWithoutTest
- Fixed incorrect links
- Fixed incorrect example for returning a sorted list
- Fixed invalid POD (GH#735)
- Updated docs on ProhibitYadaOperator (GH#662)
- Removed all the references to the old mailing list and code repository at
tigris.org (GH#757)
- This release by PETDANCE → update source URL
- New upstream release 1.126
- Added a policy: ControlStructures::ProhibitYadaOperator - Never use ... in
production code
- Fixed problems arising from having -b in your .perltidyrc file
- Removed extra newline from policy names returned by P::C::Config->policies
- 'fc' and 'say' are now covered by ProhibitUselessTopic
- Add more strict/warnings importer modules
- Path::Tiny is now recommended over File::Slurp
- Micro-optimize by calling ->content() directly instead of going through the
overloads
- Square brackets are now allowed around your '## no critic' policy list
- New upstream release 1.125
- Corrected dependency on List::Util::any() to List::MoreUtils::any()
- Revised and updated documentation
- Drop upstreamed patch for GH #626
- New upstream release 1.124
- The ProhibitUnusedPrivateSubroutines policy can now ignore files that use
particular modules with the 'skip_when_using' option, which allows, for
example, skipping the policy for roles
- The RequireUseStrict and RequireUseWarnings policies now regard Moose, Moo,
Mouse, Dancer, Mojolicious, and several other modules as equivalent to the
strict and warnings pragma
- The RequireChecked* family of policies has been fixed to accommodate
version numbers when use-ing the autodie pragma (GH #612)
- Add patch to avoid the need for List::Util ≥ 1.33 (GH #626)
- New upstream release 1.123
- Now requires PPI-1.220 which has numerous bug fixes; this may eliminate
the need for some "## no critic" markers you inserted to work around those
bugs - the "ProhibitUselessNoCritic" policy should help you find them
- Fixed a typo in the Variables::ProhibitPerl4PackageNames message
- New upstream release 1.122
- Now requires PPI-1.218, which has numerous enahncements and bug fixes
- Also now requires Readonly-2.00, which obviates the need for Readonly::XS
to get fast constants
- File::HomeDir, File::Which, and Term::ANSIColor are all required now
instead of being optional or recommended; this simplifies our test code
and ensures consistent optimal behavior for all users
- Added two new policies: BuiltinFunctions::ProhibitUselessTopic and
RegularExpressions::ProhibitUselessTopic
- Updated the perlcritic.el script to use modern Emacs hooks (GH #556)
- Removed all the internal RCS keyword boilerplate blocks that were never
getting expanded
- Use %license where possible
- Drop upstreamed patches
- xt/author/82_optional_modules.t shouldn't be trying to use Readonly::XS (#1092921)
- Run the author tests using "Build test" rather than "Build authortest" because the
latter ends up deleting META.yml and that causes the kwalitee test to fail
- New upstream release 1.121
- Added new themes based on CERT guidelines
- The source code repository for Perl-Critic has been moved to GitHub at
http://github.com/Perl-Critc/Perl-Critic; all tickets from the RT queue
have also been moved there - please use GitHub for submitting any new bugs
or corresponding about existing ones
- The change log was reformatted to comply with CPAN::Changes::Spec
- BR: perl(Perl::Critic::Policy::Miscellanea::RequireRcsKeywords) for the
extra tests
- Bump perl(Test::Kwalitee) version requirement to 1.15
- New upstream release 1.119
- Tests were failing with Config::Tiny 2.17 or later, due to a change in the
error messages produced by that module (CPAN RT#88679, CPAN RT#88889,
https://github.com/Perl-Critic/Perl-Critic/pull/16)
- BuiltinFunctions::ProhibitVoidGrep and ::ProhibitVoidMap: grep and map
called as functions are now allowed in slice operations (CPAN RT#79289)
- Subroutines::RequireArgUnpacking: most tests of the size of @_ are now
allowed (CPAN RT#79138)
- Modernized our usage of Exporter (CPAN RT#75300)
- Drop redundant patch for CPAN RT#87875
- New upstream release 1.118:
Policy Changes:
- CodeLayout::RequireTidyCode: revise to work with incompatible changes in
Perl::Tidy 20120619 (CPAN RT#77977)
- TestingAndDebugging::ProhibitNoWarnings: correct the parse of the
'no warnings' statement, so that 'no warnings "qw"' is recognized as
suppressing just 'qw' warnings (CPAN RT#74647)
- Miscellanea::RequireRcsKeywords has been moved to the Perl-Critic-More
distribution (CPAN RT#69546)
Other Changes:
- Make all unescaped literal "{" characters in regexps into character
classes; these are deprecated, and became noisy with Perl 5.17.0
(CPAN RT#77510)
- Drop now-redundant patch for Perl::Tidy compatibility
- BR: perl(lib) for the build process
- BR: perl(base), perl(PPIx::Utilities::Node) and perl(Test::Builder) ≥ 0.92
for the module (Test::Builder required by Test::Perl::Critic::Policy)
- BR: perl(Exporter) ≥ 5.58; with older versions we get:
":color_severity" is not exported by the Perl::Critic::Utils::Constants module
- BR: perl(File::Spec::Functions) for the test suite
- Drop buildreqs for perl(charnames), perl(File::Basename), perl(File::Find),
perl(overload), perl(strict) and perl(warnings) - not dual lived
- New upstream release 1.117:
New Policies:
- Variables::ProhibitAugmentedAssignmentInDeclaration reports constructs like
'my $x += 1'
Policy Changes:
- BuiltinFunctions::ProhibitLvalueSubstr: add explicit 'use version'
(CPAN RT#68498)
- CodeLayout::ProhibitHardTabs: add 'pbp' to the default_themes list
(CPAN RT#71093)
- ControlStructures::ProhibitMutatingListFunctions now understands that
tr///r (introduced in 5.13.7) does not change its operand
- ControlStructures::ProhibitMutatingListFunctions now understands that
'//=', '<<=', and '>>=' are assignment operators (CPAN RT#70901)
- ErrorHandling::RequireCheckingReturnValueOfEval now allows things
like grep { eval $_ } (CPAN RT#69489)
- Modules::RequireExplicitPackage now has configuraion option
allow_import_of, to allow the import of specified modules before the
package statement (CPAN RT#72660)
- RegularExpressions::ProhibitEnumeratedClasses no longer thinks
that [A-Za-z_] matches \w. RT #69322.
- RegularExpressions::ProhibitUnusedCaptures now skips the first block of
an 'if' or 'elsif' if the regular expression is bound to its operand with
the '!~' operator (CPAN RT#69867)
- RegularExpressions::ProhibitUnusedCaptures now looks into lists and blocks
in the replacement portion of the regular expression if /e is asserted
(CPAN RT#72086)
- RegularExpressions::RequireDotMatchAnything,
RegularExpressions::RequireExtendedFormatting and
RegularExpressions::RequireLineBoundaryMatching now honor defaults set with
'use re "/modifiers"' (CPAN RT#72151)
- Subroutines::ProhibitManyArgs now recognizes '+' as a prototype character
- Variables::ProhibitPunctuationVars now recognizes bracketed variables
embedded in interpolated strings (e.g. "${$}"); for the purpose of the
'allow' configuration, these are considered equivalent to the unbracketed
form (CPAN RT#72910)
Other Changes:
- Corrected POD in Perl::Critic::PPI::Utils (CPAN RT#68898)
- Perl::Critic::Violation source() method now returns the line containing
the violation (not the first line) when the statement containing the
violation spans multiple lines
- This release by THALJEF -> update source URL
- Drop stopwords patch, now included upstream
- New upstream release 1.116:
- BuiltInFunctions::ProhibitLvalueSubstr does not report violations if the
document contains an explicit 'use n.nnn;' where the version is before
5.005 (CPAN RT#59112)
- Documentation::RequirePodSections no longer blows up on code having POD but
no =head1 (CPAN RT#67231)
- RegularExpressions::ProhibitUnusedCapture should more reliably find things
like s/(a)/${1}2/ (CPAN RT#67273)
- ValuesAndExpressions::ProhibitMagicNumbers and Module::RequireVersionVar
now treat versions passed as the second argument of a 'package' statement
the same as versions declared as 'our $VERSION ...' (CPAN RT#67159)
- Variables::RequireLexicalLoopIterators does not report violations if the
document contains an explicit 'use n.nnn;' where the version is before
5.004 (CPAN RT#67760)