API Documentの自動生成を、PHPDocからDocBloxにしてみた。

PHPDocはデフォルトのテンプレートがずいぶん古いので。

DocBlox
http://www.docblox-project.org/

やり方は簡単・・・でもなかった。
まず、コマンドラインPEARパッケージを入れる。


pear channel-discover pear.docblox-project.org
pear install docblox/DocBlox
pear install --alldeps docblox/DocBlox_Template_zend

そしてbuild.xmlのphpdocの設定をまるごと以下のように変える。

<!-- phing -->
<target name="docblox" description="genarate API Document from Docblox">
  <exec executable="docblox.bat">
    <arg line="run -c ${basedir}/build/docblox.xml" />
  </exec>
</target>

さらに追加で、以下の内容でbuild/docblox.xmlを作成する。

<?xml version="1.0" encoding="UTF-8" ?>
<docblox>
  <title>My project</title>
  <parser>
    <target>./build/api</target>
    <markers>
      <item>TODO</item>
      <item>FIXME</item>
    </markers>
    <extensions>
      <extension>php</extension>
    </extensions>
    <visibility></visibility>
  </parser>
  <transformer>
    <target>./build/api</target>
  </transformer>
  <logging>
    <level>warn</level>
    <paths>
      <default>./build/docblox.log</default>
      <errors>./build/docblox.errors.log</errors>
    </paths>
  </logging>
  <transformations>
    <template name="zend" />
  </transformations>
  <files>
    <directory>./src</directory>
    <ignore>library/Zend/*</ignore>
  </files>
</docblox>

が、これだとグラフだけ生成されない。
これはwindows環境だけでの現象である。

原因はdocblox内でgraphvizのdotコマンドを呼び出す際に、コマンドを"dot"とハードコーディングして指定しているから。
少々強引だが、docbloxのソースをいじらずに対応するには、以下の内容のファイルをパスが通ったところに"dot"という拡張子なしのファイルとして置く。

#!/path/to/php.exe
exec("/path/to/graphviz/bin/dot.exe -V 2>&1");

これでjenkinsを通してもグラフまで出力されるようになった。
windows対応はめんどくさい。