Automattic / VIP-Coding-Standards

PHP_CodeSniffer ruleset to enforce WordPress VIP coding standards.
https://wpvip.com/documentation/how-to-install-php-code-sniffer-for-wordpress-com-vip/
Other
236 stars 40 forks source link

3.0: start using PHPCSUtils #777

Closed jrfnl closed 1 year ago

jrfnl commented 1 year ago

Composer: require PHPCSUtils

By starting to use PHPCSUtils, we make VIPCS less dependent on WordPressCS. It has brings added benefits of more stable, thoroughly tested utility methods, which all support modern PHP.

This adds the dependency and updates relevant documentation.

Note: I've not changed the GH Actions workflows to add PHPCSUtils to the matrix (yet). Changes to the workflows will be done in a separate commit.

VIPMinimum ruleset: add PHPCSUtils requirement

PHPCSUtils does not contain any sniffs, so adding this rule isn't strictly necessary, but by having the rule in the ruleset anyway, if PHPCSUtils is missing, the user will get a descriptive error message during the loading of the ruleset instead of a fatal "class not found" error once the sniffs start running.

Adding this only in the WordPressVIPMinimum ruleset is sufficient as the WordPress-VIP-Go ruleset includes WordPressVIPMinimum.

AbstractVariableRestrictionsSniff: use PHPCSUtils MessageHelper::addMessage

This is more tested than the WPCS Sniff::addMessage().

Sniff::find_array_open_close(): PHPCSUtils version

Sniff::get_function_call_parameter(): PHPCSUtils

Sniff::strip_quotes(): use PHPCSUtils version

Classes/DeclarationCompatibility: use PHPCSUtils to retrieve class/method names

Classes/DeclarationCompatibility: use PHPCSUtils to retrieve function parameters

Hooks/AlwaysReturnInFilter: use PHPCSUtils to retrieve function declaration info

UserExperience/AdminBarRemoval: use PHPCSUtils for retrieving tokens as string

AbstractVariableRestrictions: use PHPCSUtils for retrieving tokens as string

Use PHPCSUtils BackCompat for find[Start|End]ofStatement()

Classes/DeclarationCompatibility: use PHPCSUtils for retrieving name of extended class

Supersedes #734

Closes #734 Fixes #474