I’ve just released a new developer release of Perl::Critic, the static code analysis tool for Perl, as we work toward its first new release in 21 months. This version of Perl::Critic fixes a few bugs and relies on a new release of the underlying Perl parsing library PPI, which also has had its first new release in a while.
This version of Perl::Critic is also ready for the impending release of Perl 5.26, which will no longer include . in @INC by default.
I’ve been spending some time working through the issues in the GitHub project, cleaning up what I can and clarifying others.
If you’ve never used Perl::Critic to analyze your code base for potential bugs and stylistic improvements, mostly based on Damian Conway’s Perl Best Practices, try it out.
Here’s the changelog:
[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. Thanks, Kent Fredric. * Fixed an invalid test in the RequireBarewordsIncludes test. Thanks, Christian Walde. (GH #751) * If an element contained blank lines then the source "%r" displayed for a violation was wrong. Thanks, Sawyer X. (GH #702, #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%. Thanks, James Raspass. (GH #656) [Documentation] * Fixed incorrect explanation of capture variables in ProhibitCaptureWithoutTest. Thanks, Felipe Gasper. * Fixed incorrect links. Thanks, Glenn Fowler. * Fixed incorrect example for returning a sorted list. Thanks, @daviding58. * Fixed invalid POD. Thanks, Jakub Wilk. (GH #735) * Updated docs on ProhibitYadaOperator. Thanks, Stuart A Johnston. (GH #662) * Removed all the references to the old mailing list and code repository at tigris.org. (GH #757)