LoginSignup
15
17

More than 5 years have passed since last update.

CodeSnifferのインデントをタブ対応にする方法

Last updated at Posted at 2014-12-08

関連記事:

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というファイルを作る

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   # 自動調整
15
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
17