みなさんPSR-2してますか。してませんか。しましょう。
PSR-1に準拠しなければなりません。
インデントには4つのスペースを使用し、タブは使用してはいけません。
行の長さに対してハードリミットがあってはいけません。ソフトリミットは120文字を上限とし、実際は80文字以内に抑えるべきです。 名前空間定義のあとには空行を挟まなければいけません。またuse定義ブロックのあとにも同様に空行を挟まなければなりません。 クラスの開き括弧は次の行に記述しなければなりません。また閉じ括弧は本文最後の次の行に記述しなければなりません。 メソッドの開き括弧は次の行に記述しなければなりません。また閉じ括弧は本文最後の次の行に記述しなければなりません。 アクセス修飾子は、全てのプロパティ、メソッドに定義しなければなりません。またabstractとfinalはアクセス修飾子の前に定義し、staticはアクセス修飾子の後に定義しなければなりません。 制御構造の開始時は、その後に1スペースを開けなければなりません。メソッドや関数の呼び出しはスペースを開けてはいけません。 制御構造の開き括弧は同じ行に記述しなければなりません。また閉じ括弧は本文最後の次の行に記述しなければなりません。 制御構造の開始前にスペースがあってはいけません。また閉じる際もその前にスペースがあってはいけません。
すみませんでしたorz
ちなみにPHPのコーディング標準であるPSRについてはこちらが分かりやすいです。 →新標準PSRに学ぶきれいなPHP
ということで、これにちゃんと準拠するためには自動チェックしないと無理ですねと思ったのでsublimeでチェックできるように環境を整えました。
phpcs
まずphpcs(= PHP CodeSniffer)をpear経由でインストール。
pear install PHP_CodeSniffer
これで
phpcs hoge.php --standard=PSR2
とするとPSR2に準拠していない点が表示されます。
ちなみに
phpcs -i
とすると、どんなコーディング規約が使えるかチェックできます。
sublime-phpcs
次に、
sublimeのpackage controllからPhpcsをインストール。
その後、Preferences > Package Settings > PHP Code Sniffer > Settings - User
を開く。
ファイルに
{ // "phpcs_execute_on_save": false, "phpcs_additional_args": { // "-n": "", "--standard": "PSR2" } }
と書き込む。 (保存時に自動実行されたくない場合は--phpcs_execute_on_saveのコメントを外してください。warningを表示したくない場合は-nのコメントを外してください。)
以上でめでたく
Ctrl + P → sniff
とかすれば準拠してない点を羅列してくれます。
と思ったら
なんにもでなかった。windowsだとだめな様子。 ctrl+pでコンソールの出力を見ると、どうも
subprocessが悪さをしているようなので、 Problems using subprocess.call() in Python 2.7.2 on Windows - Stack Overflowとか、17.1. subprocess — サブプロセス管理 — Python 2.7ja1 documentationを参考に
phpcs.pyの162行目の
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, startupinfo=info, cwd=home)
を
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, startupinfo=info, cwd=home, shell=True)
にしました。(shell=Trueを追加)
phpcs.pyはPreferences > Browse Packages
からPhpcsに移動すればあります。
上記の修正を加えると、ちゃんと出来ました。 終わり。