あまりよく知らないんですが、javadocみたいに、PHPでソースコードからドキュメントを生成できるphpDocumentorというツールがあります。
FreeBSDでは、portsになっていて、ports/devel/pear-PhpDocumentorです。
さっそく使ってみようと思ったら、
PHP Parse error: syntax error, unexpected T_DNUMBER in /usr/local/share/pear/PhpDocumentor/phpDocumentor/Setup.inc.php on line 193
というエラー。
ファイル
/usr/local/share/pear/PhpDocumentor/phpDocumentor/Setup.inc.php
の193行目を見てみると…
192 $phpver = phpversion();
193 $phpdocver = PHPDOCUMENTOR_1.4.1;
194 if (isset($_GET['interface'])) {
195 $phpver = "<b>$phpver</b>";
196 $phpdocver = "<b>$phpdocver</b>";
197 }
198 phpDocumentor_out("PHP Version $phpver\n");
199 phpDocumentor_out("phpDocumentor version $phpdocver\n\n");
「PHPDOCUMENTOR_1.4.1」というのが、定数っぽいけど、なんとなく文法的におかしい。
そこで、その部分を適当に書き換えてみて、もう一度実行してみると、今度はべつのところで、似たようなエラー。
910 {
911 $this->render->addConverter('HTML','frames','default/');
912 }
913 if (empty($this->render->converters)) addErrorDie(PDERROR_NO_CON1.4.1TERS);
今度のは、「PDERROR_NO_CON1.4.1TERS」・・・って何これ?!
ports/devel/pear-PhpDocumentor/Makefileを見ると、こんなのがあります。
post-patch:
.for file in ${SUBFILES}
@${REINPLACE_CMD} -e 's|VER|${PORTVERSION}|g ; \
s|@PEAR-DIR@|${PEARDIR}|g ; \
s|@DATA-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@WEB-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@DOC-DIR@|${DOCSDIR:S,/${PORTNAME}$,,}|g' ${WRKSRC}/${file}
.endfor
どうも、sedの置換コマンド、s|VER|${PORTVERSION}|g で、VERというところを、手当たりしだいに置換しているらしく、たとえば、
PHPDOCUMENTOR_VER が PHPDOCUMENTOR_1.4.1 へ
PDERROR_NO_CONVERTERS が PDERROR_NO_CON1.4.1TERS へ
という具合に、勢いあまって、余計なところまで書き換えてしまっているようです。
とりあえず、portsのMakefileを、こんな風に書き換えて、VERを置換しないようにして、動作を確かめてみました。
post-patch:
.for file in ${SUBFILES}
@${REINPLACE_CMD} -e '\
s|@PEAR-DIR@|${PEARDIR}|g ; \
s|@DATA-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@WEB-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@DOC-DIR@|${DOCSDIR:S,/${PORTNAME}$,,}|g' ${WRKSRC}/${file}
.endfor
これでmake installしてから、phpdocを実行。
% phpdoc -d ./html -t ./html_doc
PHP Version 5.2.5
phpDocumentor version @VER@
Parsing configuration file phpDocumentor.ini...
(found in /usr/local/share/pear/data/PhpDocumentor/)...
done
Maximum memory usage set at 256M after considering php.ini...
using tokenizer Parser
(以下略)
@VER@というのが変ですが、とりあえず動きました。
ということは
@${REINPLACE_CMD} -e 's|@VER@|${PORTVERSION}|g ; \
の間違いなのかな?
0 件のコメント:
コメントを投稿