本題

最近あいみょんが気に入ってます。

↓以下おまけです。

PHPCodeSniffer is 何?

PHP製のPHPソースコードのコード規約のチェックと規約に沿ってフォーマットをしてくれるツール。
コード規約チェックを行う phpcsとフォーマットを行うphpcbfの2つが含まれています。

  • 各種エディタ・IDEでプラグインが用意されていて保存時に自動でチェックを走らしたり、整形させたりということが可能
  • 標準でPSR1,2などのコード規約が用意されているが、任意で各種フレームワークのコード規約などをインストールして使うことが可能

インストール

$ composer global require "squizlabs/php_codesniffer=*"

$ which phpcs
// osxの場合
/Users/[username]/.composer/vendor/bin/phpcs

$ which phpcbf
// osxの場合
/Users/[username]/.composer/vendor/bin/phpcbf

コード規約が記載されているファイルの実体は/Users/[username]/.composer/vendor/squizlabs/php_codesniffer/src/Standards

SublimeText3で有効化

1) PackageControlでPhpcsをインストール
2) Preferences > Package Settings > PHP Code Sniffer > Settings – User を編集します。

{    
    /**
     * php,phpcs,phpcbfの実行ファイルのパスを登録。自身の環境に合わせて設定してください。
     * それぞれPATHが通っている場合は記載不要です。
     * phpcs_additional_argsでコード規約のルールを規定します。
     */

    "phpcs_php_path": "/usr/local/opt/php@7.1/bin/php",

    "phpcs_executable_path": "/Users/[username]/.composer/vendor/bin/phpcs",

    "phpcs_additional_args": {
        "--standard": "PSR2",
        "-n": ""
    },

    "phpcbf_executable_path": "/Users/[username]/.composer/vendor/bin/phpcbf",

    "phpcbf_additional_args": {
        "--standard": "PSR2",
        "-n": ""
    },

    /**
     * また以下のパラメータでチェックやフォーマットが保存時に自動で実行されるかどうかを変更できる
     * 
     */
    "phpcs_execute_on_save": true,
    "phpcs_command_on_save": true,
    "phpcbf_on_save": false,
}

この時点でST3上でphpファイルを保存するとphpcs(=コード規約チェック)が動いていることを確認できます。

標準以外のルールを適応する

ここではFuelPHPのコード規約を適応させてみます。
FuelPHPのルールはこちらを使います。

eviweb/fuelphp-phpcs: PHP Code Sniffer standard for Fuel PHP

プロジェクト下にインストールしなおす

ここで若干面倒なんですが、php_codesnifferもプロジェクト下にインストールします。
上記のFuelPHPの規約ソースがPHP_CodeSnifferクラスに依存しているので、
依存解決ができる環境下で実行させないといけません。composerのglobalインストールだとautoloaderは作成されません。(きっと)

php_codesnifferとfuelphp-phpcsをプロジェクト内にインストール

require-devに追加する

"require-dev": {
    "squizlabs/php_codesniffer":"2.*",
    "eviweb/fuelphp-phpcs":"dev-master"
},

updateする

$ composer update squizlabs/php_codesniffer eviweb/fuelphp-phpcs

phpcsへ読み込ます

--config-set installed_pathsオプションで標準以外の規約ファイルをインストールできます。
wikiにあります→Configuration Options · squizlabs/PHP_CodeSniffer Wiki

$ fuel/vendor/bin/phpcs --config-set installed_paths /FULL-PATH/fuel/vendor/eviweb/fuelphp-phpcs/Standards/

注意点としてここでセットするinstalled_pathsのパスはフルパスにしてください。じゃないとSublimeText3から実行する場合にうごきません。

--config-showおよびiオプションで確認

$ fuel/vendor/bin/phpcs --config-show
installed_paths: /FULL-PATH/fuel/vendor/eviweb/fuelphp-phpcs/Standards/

$ fuel/vendor/bin/phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend and FuelPHP

SublimeText3の設定を変更

先程設定したパスなどをglobalのものからfuelプロジェクト内のものに変更します。

{
    "phpcs_php_path": "/usr/local/opt/php@7.1/bin/php",

    "phpcs_executable_path": "/FULL-PATH/fuel/vendor/bin/phpcs",

    "phpcs_additional_args": {
        "--standard": "FuelPHP",
        "-n": ""
    },

    "phpcbf_executable_path": "/FULL-PATH/fuel/vendor/bin/phpcbf",

    "phpcbf_additional_args": {
        "--standard": "FuelPHP",
        "-n": ""
    },
}

これでSublimeText3上でFuelPHPのコード規約に沿ったチェックが行えます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です