Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2007/02/16

counter hits
since 1999/11/06


phpCodeBeautifier - コーディングスタイルを統一する

みなさんも独自のコーディングスタイルをお持ちだと思います。ifの後のスペースはどうするとか、switchとcaseは同じインデントにするとかしないとか。。。この手の議論は昔からされているようで、結局、宗教戦争の域に達してしまうようです。当然、それぞれのスタイルで色々な利点があるので仕方がないんですが。

現実問題、汎用ライブラリとか仕事でコーディングする場合、ある一定のコーディングスタイルに合わせておいた方が自分以外の開発メンバーがコードを読む場合に負担が軽くなります。とは言っても、メンバー全体でなかなか遵守できないのが実際なのではないか、と思います。

JavaではCheckstyleがそれに相当しますが、PHPではphpCodeBeautifierというツールがあります。2004/11/08時点での最新版はバージョン0.8で、Windowsのexe形式のみ用意されているようです。UNIX/Linux向けはないんでしょうかねぇ。。。

memo[2007/02/16]ようやくLinux版が公開されました。

インストール方法は簡単で、ダウンロードページからダウンロードし、任意のディレクトリに展開するだけです。展開すると、コマンド版のphpCB.exe、GUI版のphpCodeBeautifier.exeが生成されます。

まずは、コマンド版のphpCB.exeの使い方です。可能なオプションのページにもある通り、オプションを指定することでどういったスタイルにするかを決定します。ただし、上記ページに書かれたオプションは全て「--」で始まっていますが、実際には引数を取るオプションのみ「--」で、その他は「-」になります(はまりました。。。)。具体的には以下の通りです。

  • ○:-space-after-if ×:--space-after-if
  • ○:--comment-rendering-style PEAR ×:-comment-rendering-style PEAR

これを踏まえて、以下のような(ある意味すごい)ソースを整形してみましょう。

●test.php

<?php
/**
* コメントです
*/
$obj      = new stdclass();
if( $obj!=NULL)
{
    switch($i) {
        case 0:
        echo "0です";
        break;
    case 1:
        echo "1です";
        break;
        case 2:
            echo "2です";
            break;
        default:
            echo "なんじゃ?";
    }
}
?>
<%
function somefunction ($obj){
    echo $obj->__toString();
}
%>

使用したオプションは、可能なオプションのページにある「PEAR Coding standards Tips」で「X」が付いたものをベースに、行末の最適化(-optimize-eol)を追加したものです(これがないと、余計な空行ができてしまいます)。また、コマンドは実際には1行で記述します。

●phpCBの実行
C:\temp>phpCB
    -space-after-if
    -space-after-switch
    -space-after-while
    -space-before-start-angle-bracket
    -space-after-end-angle-bracket
    -one-true-brace-function-declaration
    -glue-amperscore
    -change-shell-comment-to-double-slashes-comment
    -force-large-php-code-tag
    -force-true-false-null-contant-lowercase
    -align-equal-statements
    --comment-rendering-style PEAR
    --equal-align-position 50
    --padding-char-count 4
    -optimize-eol
    test.php > _test.php
C:\temp>

整形されたソースは以下のようになります。をを、すばらしい。。。

●_test.php

<?php
/**
 * コメントです
 */
$obj = new stdclass();
if ($obj != null) {
    switch ($i) {
    case 0:
        echo "0です";
        break;
    case 1:
        echo "1です";
        break;
    case 2:
        echo "2です";
        break;
    default:
        echo "なんじゃ?";
    }
}

?>
<?php
function somefunction ($obj)
{
    echo $obj -> __toString();
}

?>

実際の使い方としては、どのオプションを決定した後、BATファイル化して使うようになるかと思います。あるいは、各エディタの機能を使って外部実行ファイルにphpCB.exeを指定するような感じでしょうか。以下はBATファイルの例ですが、当然オプションは1行で記述します。

●phpcb.bat
C:\path\to\phpCB.exe
    -space-after-if
    -space-after-switch
    -space-after-while
    -space-before-start-angle-bracket
    -space-after-end-angle-bracket
    -one-true-brace-function-declaration
    -glue-amperscore
    -change-shell-comment-to-double-slashes-comment
    -force-large-php-code-tag
    -force-true-false-null-contant-lowercase
    -align-equal-statements
    --comment-rendering-style PEAR
    --equal-align-position 50
    --padding-char-count 4
    -optimize-eol
    %1 > "_%1"
move "_%1" %1

次に、GUI版のphpCodeBeautifier.exeの使い方です。こちらはダブルクリックで実行すると以下のようなウィンドウが表示され、メニューの[File]-[Open]からPHPスクリプトを読み込むことでオリジナルと整形後のソースを見比べながらオプションを指定することができます。

GUI版phpCodeBeautifier

また、オプションの指定はメニューの[File]-[Options]を選択し、以下のようなダイアログで指定します。

オプション指定ダイアログ

使い道としては、どの様なオプションでどういった動きになるのかといった確認や、実際に使用するオプションを決定する際に予め整形結果を知りたい場合に良いかも知れません。

注意点としては、上記イメージの通り、コメントなどのマルチバイトが文字化けしてしまっています。GUI版で整形結果の保存は問題ないようですので、(未確認ですが)ウィンドウのフォントを変更するような別ソフトを使用するとうまく表示されるかも知れません。



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2007 by Hideyuki SHIMOOKA all rights reserved.