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)