関連記事:
gsherwood氏の記事より
https://gist.github.com/gsherwood/9d22f634c57f990a7c64
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 余談はここから ↓-------------------
コーディング標準を自身で決める環境であれば、
あまり関係ないけれども。
プロジェクトに途中から参画したときは、
すでに存在しているコーディング標準に併せることは珍しくない。
なので、世の中はスペース字下げの方向に向かってるからと言って、
タブ字下げに対応しなくていいのかという話にはならない。
実際私もかかわっているプロジェクトはタブインデント。
Fuelphpのコーディング標準に合わせた結果こうなっている。
さて、前回記事(コーディング規約自動調整ツールCodeSnifferとphp-cs-fixer)にて紹介した
PHP_CodeSniffer2.xですが、
これには自動でコーディング標準に調整してくれるphp-cs-fixerみたいな機能が付いた。
基本的にはスペース字下げにするんだが、
これをタブに対応することができるようなので、
ちょっと記事にしてみよう。
------------------- ↑ 余談はここまで ↑ -------------------
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
PHP_CodeSnifferのインストール
コーディング標準をPSR2として、
4スペース1タブにした場合を想定。
念のためcomposerインストールから記述する。
$ mkdir phpcs; cd phpcs; # ディレクトリ作成
$ curl http://getcomposer.org/installer | php # composerのダウンロード
$ ./composer.phar init -n -s dev # composer.jsonの生成
$ ./composer.phar config bin-dir "bin/" # binディレクトリ指定
$ ./composer.phar require "squizlabs/php_codesniffer" "2.*" --prefer-dist # インストール
rulesetの追加
ruleset.xmlというファイルを作る
<?xml version="1.0"?>
<ruleset name="MyStandard">
<description>PSR2 with tabs instead of spaces.</description>
<arg name="tab-width" value="4"/>
<rule ref="PSR2">
<exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
</rule>
<rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
<rule ref="Generic.WhiteSpace.ScopeIndent">
<properties>
<property name="indent" value="4"/>
<property name="tabIndent" value="true"/>
</properties>
</rule>
</ruleset>
実行
$ ./bin/phpcs --standard=ruleset.xml sample.php # チェック
$ ./bin/phpcbf --standard=ruleset.xml sample.php # 自動調整