Skip to content

Build/Test Tools: Update PHPStan to 2.3.5 and analyze against PHP 8.6. - #15742

Closed
desrosj wants to merge 2 commits into
WordPress:trunkfrom
desrosj:update/phpstan-2.3.5
Closed

desrosj wants to merge 2 commits into
WordPress:trunkfrom
desrosj:update/phpstan-2.3.5

Conversation

@desrosj

@desrosj desrosj commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

This makes two changes to the PHPStan tooling.

Update PHPStan to 2.3.5

Updates phpstan/phpstan from 2.3.4 to 2.3.5. This release adds support for auto-fixable rules through the new --fix option, which can also remove unmatched ignoreErrors entries and @phpstan-ignore comments, and allows extensions to be registered with attributes.

The other PHPStan-related packages, phpstan/phpstan-phpunit (2.1.1) and phpstan/phpstan-strict-rules (2.1.1), are already at their latest versions.

Raise the maximum PHP version analyzed to 8.6

phpVersion.max in tests/phpstan/base.neon is raised from 80500 to 80600, and the comment above it now describes the setting as the supported version range rather than the minimum version.

With the maximum at 8.5, PHPStan narrows PHP_VERSION_ID to int<70400, 80500>, so any check for PHP 8.6 is reported as always false. For example, the PHP_VERSION_ID >= 80600 check in #15204 is flagged with greaterOrEqual.alwaysFalse, even though the branch is reachable on PHP 8.6.

Testing

Running the full analysis locally with both changes reports no new errors, and no baseline or ignoreErrors entries became unmatched, so the baselines are unchanged. With the change from #15204 applied, its greaterOrEqual.alwaysFalse warning is no longer reported.

Trac ticket: https://core.trac.wordpress.org/ticket/65817

Use of AI Tools

Claude Code was used to check for available updates, apply the PHPStan update, test the phpVersion change, run PHPStan locally, and draft this description.


🤖 Generated with Claude Code

This release adds support for auto-fixable rules through the new `--fix` option, which can also remove unmatched `ignoreErrors` entries and `@phpstan-ignore` comments, and allows extensions to be registered with attributes. The analysis reports no new errors, and the baselines are unchanged. The `phpstan/phpstan-phpunit` and `phpstan/phpstan-strict-rules` extensions are already at their latest versions.

Follow-up to r65078.

See #65817.
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs.

Core Committers: Use this line as a base for the props when committing in SVN:

Props desrosj.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.


Props Bot commands

You can trigger Props Bot actions by commenting on this PR:

  • @propsbot add <username> to give props to a GitHub user. Requires write access.
  • @propsbot remove <username> to leave a user out of the props. Requires write access.
  • @propsbot refresh to refresh this list. Adding the props-bot label works too.

WordPress 7.2 will support PHP 8.6.
@desrosj desrosj changed the title Build/Test Tools: Update PHPStan to 2.3.5. Build/Test Tools: Update PHPStan to 2.3.5 and analyze against PHP 8.6. Nov 6, 2026
@desrosj desrosj self-assigned this Nov 6, 2026
@desrosj desrosj moved this from Backlog to In review in WordPress Project Build Tooling Nov 6, 2026
@desrosj desrosj moved this from In review to Ready in WordPress Project Build Tooling Nov 6, 2026
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

@desrosj

desrosj commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

Merged in r65310.

@desrosj desrosj closed this Nov 6, 2026
@desrosj
desrosj deleted the update/phpstan-2.3.5 branch November 6, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

1 participant