PHPを最新コーディング規約に合わせて修正してくれるツール「PHP Coding Standards Fixer」
こんにちは、@9ensanです。
前回、「PHPのコーディング規約 PSR-0、PSR-1、PSR-2、PSR-3とは」でPHPの新しいコーディング規約について書きました。
今回は、その新しいコーディング規約にしたがって既存のソースコードを修正してくれるツールの紹介です。
そのツールは、Symfony、Twig、Silix、Swift Mailerなどの有名なPHPフレームワーク、ライブラリを開発している「SensioLabs」の「PHP Coding Standards Fixer」というツールです。
インストールから使い方までを解説していきたいと思います。
インストール
ローカルインストール
使用するだけなら、「php-cs-fixer.phar」をダウンロードしてくるだけで使用できます。
グローバルインストール
どこからでも利用できるようにインストールする為には、
wget利用時
sudo wget http://cs.sensiolabs.org/get/php-cs-fixer.phar -O /usr/local/bin/php-cs-fixer
curl利用時
sudo curl http://cs.sensiolabs.org/get/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer
上記いずれかで「php-cs-fixer.phar」をダウンロードしてインストールします。
ダウンロードしてきたファイルに実行権限を付与します。
sudo chmod a+x /usr/local/bin/php-cs-fixer
アップデート
ローカルインストールした場合
ダウンロードしてきていた「php-cs-fixer.phar」に対して以下のコマンドを発行する。
php php-cs-fixer.phar self-update
グローバルインストールした場合
sudo php-cs-fixer self-update
実行
ローカルインストールした場合(php-cs-fixer.pharへのパスはダウンロードしてきたファイルへのパスにする)
php php-cs-fixer.phar fix /path/to/dir php php-cs-fixer.phar fix /path/to/file
グローバルインストールした場合
php-cs-fixer fix /path/to/dir php-cs-fixer fix /path/to/file
以降は、グローバルインストールを前提に記述します。
PSR-0、PSR-1、PSR-2のそれぞれの修正を実行する方法
php-cs-fixer fix /path/to/project --level=psr0 php-cs-fixer fix /path/to/project --level=psr1 php-cs-fixer fix /path/to/project --level=psr2 php-cs-fixer fix /path/to/project --level=all
levelを指定しない場合のデフォルトは、PSR-2の全てのといくつかの追加機能が実行されるって書いてあるけどどう動くんだろ?
–fixersオプションを指定することで細かく実行する内容を指定できます。
php-cs-fixer fix /path/to/dir --fixers=linefeed,short_tag,indentation
fixers一覧
- indentation [PSR-2] タブを4つのスペースを使ったインデントに修正
- linefeed [PSR-2] LFでの改行に修正
- trailing_spaces [PSR-2] 行末のスペース削除
- unused_use [all] 使用していないuseを削除
- php_closing_tag [PSR-2] 閉じタグの削除
- short_tag [PSR-1] <?php、<?=以外のPHP開始タグを<?phpに修正
- return [all] return文の前に空行を追加
- visibility [PSR-2] 全てのプロパティ、メソッドにアクセス修飾子を追加する。(記述がない場合publicになる)final、abstructはアクセス修飾子の前に記述し、staticはアクセス修飾子の後ろに記述する。
- braces [PSR-2] クラスとメソッドの開きカッコは次の行に記述する、閉じカッコは本文の次の行に記述する。制御構文の開きカッコは同じ行に記述する、閉じカッコは本文の次の行に記述する。(閉じカッコについては上手く動作がしない?)
- phpdoc_params [all] phpdocの@paramは全て縦に並べて記述する。(うーん、動作しない?)
- eof_ending [PSR-2] ファイルの最後に空の改行を入れる(うーん、動作しない?)
- extra_empty_lines [all] 余分な空行を削除する。
- include [all] includeとファイルパスの間は1つのスペースで区切る。ファイルパスの指定にカッコは使用しない。
- psr0 [PSR-0] 名前空間とパスが一致していないといけない。(エラーメッセージのみで修正はしない)クラス名とファイル名が一致しないといけない。
- controls_spaces [all] 制御構文のカッコ「()」の前後にスペースを記述する。
- elseif [PSR-2] 「else if」ではなく「elseif」を使用する。
–configオプション
Magento、Symfony2.0、Symfony2.1用のディレクトリ構成でチェックを行うようにできる。
–dry-runオプション
実際にファイルの修正は行わず修正対象のファイル名が表示される。
vimやsublimetext2用のヘルパーもサイトには用意されています。
上手く動作していないようなものもあったので、自分でPSRに準拠するように記述し補助的な形で使用するようにするのがいいのかと思います。
関連する記事:
- nginxで413 Request Entity Too Large
- PHPでライブラリの依存管理をするツール「Composer」の使い方
- AndroidでUriからファイルパスを取得する方法
- MacにCofeeScriptの実行環境をインストールする方法
- さくらのVPSにredisをインストール
コメント 0