v2.22.0

Fixed

  • The phpcs analyzer honors the repo’s own ruleset (#1042). It used to apply the Drupal standard to every PHP repo and ignore phpcs.xml. On a WordPress plugin this gave High indentation findings on test files that the ruleset does not lint. The analyzer now reads the ruleset as data and gives phpcs a generated ruleset. phpcs never reads the repo file, because a ruleset can load PHP from the workspace. The analyzer keeps the <file> scope, the exclude patterns, and the rules that name installed standards or sniffs. phpcs runs from an empty directory, so no name in a ruleset can resolve to a file in the repo.
  • A merged finding from two analyzer tools keeps both messages (#1044). Before, the merged finding kept only the highest-severity text. Now the other tool’s message shows as Also reported by: in the inline comment, the GitLab discussion, the review body, and the Bitbucket annotation.

Changed

  • Behavior change: Drupal standards apply only to Drupal repos. With no phpcs ruleset, a repo gets Drupal and DrupalPractice only when it shows Drupal signals (*.info.yml, a Drupal 7 *.info file, a .module file, a composer type of drupal-*, or a drupal/core requirement). Other PHP repos get PSR12. Open pull requests can see new findings and stale threads that resolve.
  • A ruleset that names a standard the image lacks gets a style-neutral fallback. For example, WordPress is not installed. phpcs runs seven correctness sniffs with no code-style opinion, plus the repo rules that name installed sniffs, and the log names the missing standard.
  • Bugfixes now land directly on main. A defect fix that deserves a patch release no longer goes through a release branch. Features still do. This is a process change with no code change. See the contributing guide.
  • Dependency updates. Python is 3.15 in the workflows and ruby/setup-ruby is v1.329.0.

Known limits

  • The WordPress standard (WPCS) is not in the image yet (#1043).
  • Rule-level type="relative" exclude patterns are not applied to files that the review gives to phpcs by name.

See CHANGELOG.md for full technical detail.