🔧

PHP8.2でphpcs, phpcbfを動かすようにした話

2023/06/14に公開

はじめに

PHP8.2でphpcsとphpcbfを動かそうとした時の対応法をまとめます。

phpcs, phpcbfとは

https://github.com/squizlabs/PHP_CodeSniffer

  • phpcs: PHP Code Sniffer
    • コーディングルール的に問題のある箇所を教えてくれるコマンド
  • phpcbf: PHP Code Beautifier and Fixer
    • コーディングルール的に問題のある箇所を可能な限り直してくれるコマンド

実際やったこと

https://packagist.org/packages/cakephp/cakephp-codesniffer#4.5.0

composer.json
"cakephp/cakephp-codesniffer": "^4.5",
composer.lock
"cakephp/cakephp-codesniffer": "^4.0",
"squizlabs/php_codesniffer": "^3.6"
vendor/bin/phpcs sample.php

↓以下のエラーとなる

Deprecated: Creation of dynamic property SlevomatCodingStandard\Sniffs\TypeHints\DeclareStrictTypesSniff::$newlinesCountAfterDeclare is deprecated in /var/www/html/vendor/squizlabs/php_codesniffer/src/Ruleset.php on line 1326
Deprecated: Creation of dynamic property SlevomatCodingStandard\Sniffs\TypeHints\DeclareStrictTypesSniff::$newlinesCountBetweenOpenTagAndDeclare is deprecated in /var/www/html/vendor/squizlabs/php_codesniffer/src/Ruleset.php on line 1326

何が起きてる?

【PHP8.2】動的プロパティが禁止される

https://github.com/squizlabs/PHP_CodeSniffer/blob/3.6.0/src/Ruleset.php#L1326

コードで言うとここでsniffsに対してnameという動的プロパティを生成しようとして怒られている。

対応方法

https://github.com/squizlabs/PHP_CodeSniffer/issues/3489#issuecomment-1534844502

vendor/bin/phpcs -d 'error_reporting=E_ALL~E_DEPRECATED' sample.php

エラー出力レベルを調整することで回避できるようになります。

まとめ

以上、PHP8.2にてphpcs, phpcbfを実行する方法でした。
現在はこちらのプルリクで解消された模様です。
最新バージョンを入れていれば問題ないようなのでこれから使う方は最新を入れれば問題ありません!

NE株式会社の開発ブログ

Discussion