AlmaLinux9 にて phpcs + PHPCompatibility を試したので覚書
■ はじめにPHP 5.4.16 -> PHP 8.3.21 のアップデート作業が必要になったので、
PHPCompatibilityにてテストしてみることに。
composerはインストールされており、
この覚書ではcomposerの実行ユーザを vendor であるものとする。
(rootでなければ好きなユーザ名で構わない)
■ phpcsをインストール
# sudo -u vendor composer global require "squizlabs/php_codesniffer=3.7.2"
バージョンを固定しているのは現在、4.0系ではPHPCompatibilityのインストールに失敗するため。
将来的には最新版で大丈夫なようになるはず。
まずは最新版で試してダメなら3.7.2を試すと良い。
■ PHPCompatibility をインストール
# sudo -u vendor composer global require "phpcompatibility/php-compatibility"
■ phpcsだけでコマンドを使えるようにする。(任意)
# echo 'export PATH="/home/vendor/.composer/vendor/bin:$PATH"' > /etc/profile.d/phpcs.sh
# chmod 644 /etc/profile.d/phpcs.sh
設定を即時反映
# source /etc/profile.d/phpcs.sh
■ phpcs に PHPCompatibility のパスを登録
# phpcs --config-set installed_paths /home/vendor/.composer/vendor/phpcompatibility/php-compatibility
以上。
■ phpcs が PHPCompatibility を認識しているか確認
# phpcs -i
The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend and PHPCompatibility
など、PHPCompatibilityがあればOK。
■ phpcs の使い方
・基本形(.以下の階層も含めて全てを対象にする)
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility .
・拡張子を限定したい場合
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility --extensions=php,html .
・対象から外したいものがある場合
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility --ignore='**/.private/*',**/cache/*,**/vendor/* .
※** は「すべてのサブディレクトリ」。
・テキストとして出力したい場合
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility --extensions=php,html . > phpcs_result.txt
■rule.xmlファイルの作成のススメ
上記でも動くのだが、例えばphpファイルをhtmlとしてしか使っていないファイルなどをまとめてチェックすると下記のようなエラーが大量に並んでしまい視認性が悪い。
WARNING | No PHP code was found in this file and short open tags are not allowed by this install of PHP. This file may be using short open tags but PHP does not allow them.
■rule.xmlファイルの作成
詳細な書き方は調べてもらうとして、サンプルとしてはこのような書き方ができる。
<?xml version="1.0"?>
<ruleset name="CustomRules">
<rule ref="PHPCompatibility"/>
<config name="testVersion" value="8.3"/>
<rule ref="Internal.NoCodeFound">
<severity>0</severity>
</rule>
<exclude-pattern>vendor/*</exclude-pattern>
<exclude-pattern>private/*</exclude-pattern>
<exclude-pattern>cache/*</exclude-pattern>
<exclude-pattern>Smarty/*</exclude-pattern>
<exclude-pattern>templates_c/*</exclude-pattern>
</ruleset>
■rule.xmlファイルを読み込んで実行
例えば、/root/phpcs_rules.xmlにルールファイルを置いた場合、は下記のようにすれば動く。
また、それ以外のオプションも並行して使用可能。
# phpcs --standard=/root/phpcs_rules.xml --extensions=php /mnt/hdd1/html > phpcs_result.txt
半年前のアンケートとかでスコアの高かったモノをまとめた
— りょうご (@Ryogo_PL) April 28, 2025
『ちびキャラ用 コスチューム素材プラグイン Vol.4』を
公開しておきましたhttps://t.co/Rm9dts90Gx pic.twitter.com/CgfbKVUhUg
昔描いたイラストをマイブームな画風で描き直してみたシリーズ pic.twitter.com/jNxnKCyMsn
— りょうご (@Ryogo_PL) November 12, 2023
昔描いた 東方イラスト をマイブームな画風で描き直してみたシリーズ pic.twitter.com/AV9PMOWa5c
— りょうご (@Ryogo_PL) July 9, 2022

