PHPを最新コーディング規約に合わせて修正してくれるツール「PHP Coding Standards Fixer」


こんにちは、@9ensanです。

php-psr-coding-standards-fixer-01

前回、「PHPのコーディング規約 PSR-0、PSR-1、PSR-2、PSR-3とは」でPHPの新しいコーディング規約について書きました。

今回は、その新しいコーディング規約にしたがって既存のソースコードを修正してくれるツールの紹介です。

そのツールは、SymfonyTwigSilixSwift 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オプション

実際にファイルの修正は行わず修正対象のファイル名が表示される。

 

vimsublimetext2用のヘルパーもサイトには用意されています。

上手く動作していないようなものもあったので、自分でPSRに準拠するように記述し補助的な形で使用するようにするのがいいのかと思います。

関連する記事:

Facebookでコメント

コメント

  1. コメント 0

  1. トラックバック 0

*

return top