まとめ ブログ ダウンロード 掲示板 メール

れぶろぐ

< 2006-05-14 (日) 2006-05-17 (水) > 最新


2006-05-15 (月)

PHP のソースコードの整形

昔書いた PHP のスクリプトを、 PEAR のコーディング規約に沿った形に整形したい。 そう思って、いくつかのソフトを試してみた。 シンプルな例として、こんな test.php を整形させてみる。

<?

if($a==TRUE){
  echo "TRUE";
}
else {
  echo "FALSE";
}

?>

PHP_Beautifier

以下のコマンドを実行し、インストール。

# pear config-set preferred_state beta
# pear install --alldeps PHP_Beautifier

コマンドラインから php_beautifier コマンドを実行。

php_beautifier -l "Pear()" test.php

こんな出力結果が得られた。

<?

if ($a == TRUE) {

  echo  "TRUE";
} else {

  echo  "FALSE";
}


?>

…なんだ、これは? あちこちに改行が入って、スカスカのコードになる。 マニュアルを読んだが、それを抑制するオプションも無いっぽい。 よく見たら、インデントも変わっていないじゃないか。 ダメ、却下。

phpCodeBeautifier (コマンドライン版)

コマンドライン版と GUI 版があるが、 まとめて変換したいのでコマンドライン版の方を使う。 オプションの入力を省くため、以下の phpCB.bat を作る。

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 --padding-char-count 4 %1 %2 %3 %4 %5 %6 %7 %8 %9

phpCB.bat test.php を実行。

<?php

if ($a == true) {
    echo "TRUE";
    }
else {
    echo "FALSE";
    }

?>

これも、} の位置がおかしい。 却下。

phpCodeBeautifier (GUI 版)

仕方ないので、GUI 版を試してみる。 マニュアルに従い、以下のオプションにチェックを入れる。

  • 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
  • glue arrow
  • change shell comment to double slashes comment
  • force large php code tag
  • force true false null contant lowercase
  • align equal statements
  • optimize eol

変換結果は以下の通り。

<?php

if ($a == true) {
    echo "TRUE";
} else {
    echo "FALSE";
} 

?>

ようやく、それなりに期待通りの結果が得られた。 しかし、バッチ処理できないのが困りものだし、 微妙な部分は手作業で修正しないといけない。 例えば、最後の } の後にスペースが入ってしまっている。 難読なソースコードを読みやすくするのには使えそうだが、 これで変換してそれでOK、というわけにはいかなさそうだ。

(追記) GUI 版のオプションと見比べていたら、 コマンドライン版の } の位置をまともにする方法が分かった。 -optimize-eol オプションをつければ良い。

このエントリの続き: 2006-05-17 (水)
Tags: PHP | このエントリを含む del.icio.us | このエントリを含むはてなブックマーク | このエントリを含む livedoor クリップ | Permalink
本日のリンク元

編集