トップ «前の日記(2007-02-13) 最新 次の日記(2007-02-15)» 編集

2007-02-14 [長年日記]

_ PhpDocumentor の templatebase って効いてる?

プロジェクトの数がなんか知らない間に増えそうな予感がするので、phpdoc の生成を今までよりも高次元で自動化しようと思ったわけです*1が、この際、例によってこの子は iso-8859-1 しか喋る気のない大変困ったちゃんなわけです。

で、テンプレートの方に手を加えるんだよという話はあちこちで書かれているわけですが、

配布物に手を加えたらアップグレードのときに面倒くさそう

というのはある程度経験を積んだ方なら当然感じます。いやな予感がビンビンするところです。

幸い、phpdoc コマンドは -tb ( --templatebase ) というオプションで別な場所に置いてあるテンプレートを取り込むことができると書かれています。おぉこれは便利。早速これを使ってオリジナルのテンプレートを作っていこう…と思ったら効かねーよ!

当然階層違いとか間抜けなことは言いませんよ。Converters フォルダ、またその上のフォルダの phpDocumentor のフォルダから順にすべてのレベルのフォルダを templatebase で指定した場所に置いてみました。見事にすべて無視されます。

頭に来たのでソースを追いかけます。関係しそうなファイルは

  • Converter.inc
  • IntermediateParser.inc
  • Io.inc

辺りですが、睨んだ場所に print を仕込んでもわざと間違った場所を指定して error_reporting を仕込んでも全然必要な情報が取れません。お前はいったいどこを通過してどのフォルダ、どのファイルを求めているの?

面倒くさくなったので*2他のテンプレートが置かれているのと同じフォルダ(今回は /usr/share/php/data/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates)に、そのまま *.i18n という名前で元のテンプレートフォルダをコピーして、そこでカスタマイズを始めました。やったことは iso-8859-1 を検索して削っていくだけ。

探すと同じような症状が

PEAR :: Bug #9250 :: --templatebase does not function as expected

にあるんだけど、再検証したっていう報告が結局上がっていない。あんまり使われてないのかなぁ。この辺の困った具合を除けばそれなりによくできたツールだと思うんだけども。

※ というわけで pdoc, jsdoc, rdoc, phpdoc 生成の自動化完成。phpdoc はテンプレートで、jsdoc は正規表現が再帰マッチするらしくメモリ不足で segmentation fault してハマりましたが、どうやら解決。ちくしょう意外と面倒だった。

Tags: PHPDoc PEAR PHP

*1 一度 svn co してドキュメンテーション対象のコードのフォルダを増やすと自動的にそれが svn update と phpdoc の対象となるように。

*2 デバッガでトレースとか面倒なことはやってられません。