【コメント】doxygen【コンソメ】
■ このスレッドは過去ログ倉庫に格納されています
>>82
Cにない構文は、INPUT_FILTERにsedかなにかのスクリプトを指定して事前に取り除くしか。 >83-84
ありがとう、ただそれだとattributeが消えちゃうよね
なんとか残したまま正しく動作させたいんですよ 1.5.x で enum EnumName に対して @relatesalso StructName を書くと StructName のページに
EnumName が出るようになるのですが、enum のメンバーのリストが表示されなってしまいました。
1.4.x ではできていた記憶があるのですが、1.5.x で正常にする方法はあるでしょうか?
OPTIMIZE_OUTPUT_FOR_C は YES です。 正しく=attributeを残したまま、メンバ変数はメンバ変数として認識だろjk 正しくって……
そんな拡張に一一対応しろってのか?
ソースあるんだろうから自分でやれよと思うのだが。 いちいちソース書き換えとかコスト見合わないでしょ
だからそれ以外でなんとかする方法を探してるんじゃないか?
まあattributeは確かに独自拡張だが、gccだし割とよく使われてるんで対応してても良いと思う 汎用的に
構文解析時だけ指定キーワードを無視するオプションがあればいい
つか、ないのかな? >>91
あなた流に言うと、コストに見合わないので対応しません そもそもC言語にメンバ関数は無いんだからdoxygenのバグとも言えるだろ
想定外の構文には警告なりエラーなり出して欲しいよな mac osx 10.5.5
doxygen 1.5.7.1
で実行しようとすると、Failed to run doxygen と言われて一切実行できません。
対処法知っている方、教えて下さい。 クラス関連図って作れますか?
1クラスの構造を図にはできるみたいですが・・・
C++です。 @dateの後ろに付ける日付をsubversionが自動更新してくれるように
$Date$にしたら、出来たhtmlで日付の見出しが2重になってました。
もしかしてバージョン管理システムのキーワードをdoxygenが認識して
適当に見出し付きで整形してくれるんでしょうか。
マニュアルにそれらしい説明を見た覚え無いんですが。 公式とかで、きちんとした例が*.hしかないと思うのは気のせい? ちょっとメモ。
doxygenで出力したRTFがどうも文字化けするので調べてみたら、\\'を\\\'に変換することで解消することが判った。
要は\を表すのにそれ自身をエスケープして\\とする必要があると言うことなのだろうか。もうちょい調べる必要はありそう。 >>100
doxygenは$date$を認識するみたいだね。だから@dateは書かなくていい
>>101
ヘッダーに書けば十分だからじゃないかな。
でも、詳細をヘッダーに長々と書いてヘッダーが読みにくくなりそうなときは、詳細だけcppに分けて書くことはあるよ。それでもdoxygenはちゃんとまとめてくれる
>>107 thx
十分かとも思えてきた。
概要かけばいいんだもんな。
漏れは最近doxygen向けのコメント付けはじめたからもうちょい使って慣れてみるわ >>103
Shift-JISコードの2バイト目に\を割り当てたマイクロソフトに原因がある。
更に追加。他にも、エスケープすべき文字をエスケープしていない箇所を発見。
xyzzyの場合の正規表現置換でこれを行なうとかなり改善する。
(query-replace-regexp "\\(\\\\'..\\)\\([{}][^
][^t]\\)" "\\1\\\\\\2")
# 場当たり的だなぁ…… あー、済まない、補足。
文字列中に出てくる「{」も「}」も、どちらもエスケープしなければならないと言うのが>110の対応。
但し、文字列中かどうかの判断を厳密に行ないたくないので手元のファイルで場当たり的に対応してある。
誰か、ソース拾ってきて対策してくれる奇特な人はいないもんかのぉ。 >>111
文字列として表示されるべき「{」や「}」がエスケープされてないってこと?
いつもHTMLしか出してなかったんだけど、試しに手元にあるソースでRTF出してみたら、
こちらではリストをネストさせてるところで、上の階層の行末の書式文字の「{」が
普通の文字として扱われたりして、「{」と「}」の対応が崩れてエラーになってるっぽいです。
(いや、ネストされて表示はされてるから、書式文字以外に余分に「{」が付いてる?)
行末が特定の文字(「定」とか「得」とか)の場合になるみたいだけど、
条件がよくわかりません… >>112
2バイト文字の2バイト目に{}\のいずれかが来るケースで、エスケープされないようです。
# 「定」「得」どちらも該当しないようですが……
処が文字列を明示的に区切らないのがRTFの仕様らしくて、キーワードとしての{や}と区別が難しいのですよ。
実は>102の対策だけだと{}の対応が崩れてしまってrtfの一部だけしか読み込まれないことが判って気づいたんですが。
# 客先に実態の1/3程度しか分量がない資料を提出しちゃったのは内緒w
念のため確認したら、手元のDoxygenはCygwin同梱の1.5.5でした。
# さて、rtfを変換するツールを真面目に作るのとdoxygenそのものを修正するのとどっちが楽だろかw >>113
だいぶ前からエンコーディング指定して全部一旦 UTF-8 に変換されるようになったから
その手の問題は解決済みだと思ってるんだけど、何かバージョン上げれない理由でもあるの? cygwinの最新は1.5.5-1だね。
つまり、解決済みではないらしい。 cygwinは使ってないので、それが理由かどうかは知りませんが、
1.5.6から1.5.7.1まではフレーム付きHTMLのツリービューで
英数字以外が文字化けするという問題がありました。
2日前に出たばかりの1.5.8でやっと解決されました。 >>115
Windows ネイティブ版を使えない理由があるの? 全部一旦 UTF-8 に変換されるようになったのは、1.5.2以降だから、
>>113, >>115 の cygwin版も UTF-8 に変換されるバージョンです。
最新版でも日本語RTFはかなり駄目な感じです。
手元のソースを処理させてみたら、目次の見出しの「目次」の後ろとか、
あちらこちらに見えてはいけない「\par」や「{」が見えて、
本文数ページで破綻します。 HTML だと問題ないってことかな? HTML しか使ってないからよくわかんないや。 昔、1.4.6でRTFを作ったことのあるソースを、設定をほとんど変えずに1.5.8に掛けても駄目でした。
1.4.6で作ったRTFの半分ぐらいしかファイルサイズがありません。
むしろ内部処理が UTF-8 になってから、おかしくなったんじゃないかという気がしてきました。 折角色々対応してあったのを、UTF-8にしたのを機に捨ててしまったような感じだな。
この正月休みの間に暇があるようならソースでも見てみるか。 過去のバージョンを取ってきて順に試してみました。
1.5.0までは日本語の RTF が生成できて
(おかしなところが無いかまではチェックしてませんが)、
1.5.1で、
"Warning: Output language Japanese not supported! Using English instead."
と表示され、日本語が表示できませんでした。
ここで一旦無かったことにされたようです。 問題分かったかも。
id 437346 のバグレポートで日本語対応の議論がされてるんだけど、
報告者の人が提案した、
x080より大きいバイトが来たらマルチバイト判別フラグON、
次のバイトでフラグOFF、というのをそのまま採用してくれたらよかったのに、
0x80より大きいかの判断をそのままフラグに入れちゃってるから、
2バイト目が0x80より大きい場合に、その次のバイトまでエスケープされて、
それがエスケープされたら困るものの場合に不幸になってるということかと。 repopかければいいのに。
rtfって何で読めるんだろう。AbiWord?ooo? >>123
事はそう単純じゃない。というか、もっと単純。
内部UTF-8をcp932に変換して、必要ならエスケープすべきなのにそれをしていないと言うのが>102=113の観測だろ。
例えば「ソソ」が「\'83\\\'83\\」にならないといけないのに「\'83\\'83\」になると。
それとも、二種類の問題が独立して存在しているのか? >>125
ああ、すいません。
>>123で書いたのは、1.5.8の場合の問題です。
>>102,,>>113の、.1.5.5の問題はエスケープされてないというので合ってると思います。
1.5.8でそれに対する対応が入れられたけど、方法がまずく、
今度は逆にエスケープすべきでないところまでされたという話。 とりあえず保守ですが、あけおめ。
日本語rtf使えるようになるといいですね
自分はまだ皆様のようにハックに参加できるほど技術がないので、精進したいと思います。 又更につまらない問題に遭遇。
折角修正したrtfがWordだと読めるのにOpenOfficeだと文字化けする。
例えば、「\'83\\」のような>125が指摘した例だと、「\'83\'5c」のようにしないといけないらしい。
あーもう、rtfを解析するしかないのかなぁ。
# doxygen1.5.8で変わっているらしいからそっちに手を出すのは避けたいし。 1.5.8 のrtfのエスケープバグのソースって
どのファイルなのかな? ちょっとLinuxに1.5.8をインストールしたので出力してみたが、これは酷いw
2バイト文字を全てコード出力しているのはいいが、>123のように無関係なコマンド文字まで巻き添えにしてしまっている。
おまけに、コマンド文字列を何故か\commentで括ってしまっているので収拾がつかない状態。
そうそう、html出力のツリービューも、(UTF-8)指定なのにも関わらずプロジェクト名がEUCで出力されるので化け化け。
誰かなんとかして〜w
# ってことで、>131に期待♪ うはw ぼくとしては>102さんに期待してるんだけどっw >>131
rtfgen.cpp の void RTFGenerator::postProcess(QByteArray &a) です。
こちらを参考に。
ttp://bugzilla.gnome.org/show_bug.cgi?id=437346
>>132
そういや最近プロジェクト名を日本語にしてなかったけど、これは…
どうやらDoxywizardのバグのようです。
テキストエディタでDoxyfile開いてプロジェクト名を修正して、
コマンドラインでDoxygenを実行したら、文字化けしませんでした。 >>134 ソース位置ありがとう。
これって、よくわかってないけど、postProcess()で、ファイル全体を
エスケープしてるのかな。
もしそうなら、rtfでの表示される文字列以外も全部エスケープされて
しまい、上のバグが症状がでてるんじゃないかな?
rtf表示文字列だけをエスケープするようにするには、postProcess()
の中でやってちゃだめで、rtfgen.cpp(にあるか知らないけど)
で表示文字列をrtfタグ中に埋め込む時コード当たりでやらないといけなそう?
とりあえず、doxygenをWindowsでコンパイル出来る環境作り
からやらないといけないのが辛いorz
>>135
頑張れw
Cygwinなら協力する。
# つーか、ソース拾ってきて自分でやれ>自分 >>135
0x80より大きい値とmb_flagが1のときだけエスケープされるはずです。
1.5.7.1以前のバージョンではmb_flagが無くて、0x80より大きい値という条件しかなかったので、
マルチバイト文字の2バイト目が「{」や「\」などの場合におかしくなってました。
mb_flagをマルチバイト文字の1バイト目で1にすれば、
次のバイトが0x80以下でもエスケープされるという仕組みのはずですが、
mb_flagの設定方法がまずくて、2バイト目でクリアされなくて
さらに次のバイトまでエスケープされる場合がある、という状況です。
ttp://bugzilla.gnome.org/show_bug.cgi?id=437346
で、T.Matsuyama氏が提示したコードが正しく動くはずです。
#そこまで分かってるな自分でやれ、と言われそうだ……
すいません、環境作りが荷が重いですorz バグ修正版バイナリ出来たよん。
http://www1.axfc.net/uploader/He/so/182473&key=doxygen
T.Matsuyama氏パッチそのままです。
ばっちりっぽいです。
102さん、134さんありがとw てか、>>137のURLが示すバグをreopenして開発者に教えてあげればいいんじゃないの?
アカウント持ってないから誰でもreopenできる設定なのかはわからないけど コメントが一切ついてないソースに
関数の定義部分だけ自動的に
タグを生成してくれるツールないですか? >>142
このスレ的には、タグというとDoxyfileのタグのことになるのだがそれでいいのかい? ドキュメントつけしてない関数も出力するオプション? やっと>138を試せた。取り敢えず、cygwinからでも使えることと日本語が化けないことは確認した。
但し、OpenOffice(3.0)では{comment[^{}]}を取り除く必要があったこととTITLEなどのフィールドは
巧く変換できなかったけれど、これは元からそうなのかもしれない。
今度機会があれば、素直にMSwordに食わせてみるとしよう。 cygwinで>138を動かし、できたRTFをWORD2000に食わせた。
全選択してフィールドの更新、画像アンリンクのマクロを動かして、
docに名前を変えて保存。一応、スタンダロンで使える資料になるようだ。
で、画像アンリンクのマクロって需要あるかな。あるようならどっかで公開するけど。 doxygenのライセンスってGPLですよね。
doxygenのコメントを書いたソースって公開しないと駄目ですか? ならないよ
GPLのお絵かきソフトで絵を描いたようなもん DoxyfileもGPLに該当しないのかな。
それとも、コメント部分は削除しておいた方が無難? ソフトのドキュメントを作るのにDoxygenを利用してもGPLにする必要なし。
ソフトの機能としてDoxygenを利用する場合はGPL。 @a と @p ってどう使い分けてる?
どっちも文中の引数のフォントを変えるために使うものみたいだけど。 \aは「特殊なフォント」ということで一般的にはItalicかな。
\pは\cと等価で「タイプライタフォント」ということで等幅フォントが使われる。
後は、実際の出力を見て検討したら? 普通はどうする、ということは特になくて、見た目の好みで使えばいいのですか。
ヘルプを見ると、@aは "refer to member arguments" 、
@pは "refer to member function parameters" と書かれてて、
微妙に使い分けがあるようなないような、よく分からなかったもので。 意味で使い分ければいいと思う。
フォントとかの体裁はCSSで変えられるんじゃなかったかな?やったこと無いけど。 @a の argument が実引数で @p の parameter が仮引数なわけだけど、
コメント中では仮引数しか現れない気がする。実引数が現れることなんてあるか? 恣意的に使い分ければいいんじゃね?
>>157
出力するものによって指定するスタイルシートや指定方法は違うけど、htmlならcss,だね。
やったことないけどw member argumentがクラスのメンバー変数ってことはないかな。 >>158
@p param1 の値が @a xxx だったら〜
みたいな説明を書くのに使うとか? メソッドのコメントは、戻り値がなくても「@return なし」と明示的に書くべきでしょうか?
引数がない場合も同様に「@param なし」と書くでしょうか? 前者はお好きにどうぞ。
後者は「なし」なんて引き数はないぞって警告が出るんじゃないかな? >>163
レスありがとうございました。
確認したら「@param なし」ではwarning argumentと出ましたのでこれは書かないようにします。 今の大会は、開発環境の違いによる面白さもあると思う。
共通スペックでやるなら別に大会をおこせばよいと思う。 ソースの先頭のコメントの 理想的なサンプル を教えて。
言語は問わないけど、出来ればCで。 理想的かどうか知らんが、私の典型。
--
////////////////////////////////////////////////////////////////
/// \file foo.c
/// \brief あーたらこーたら
///
/// あーたらこーたらをあーたらこーたらするとかなんとか。
/// \date 2009/3-4
/// \author bar\@site
/// \attention なんだかんだ
/// \version hage.hige.hoge
//
-- >>169
とりあえず最小限はこうだろ。 JAVADOC_AUTO_BRIEF オンで。
/** @file
* 簡単な説明.
* 詳細な説明
*/
170 のやつだと、ファイル名はどうせ名前変更したときに更新し忘れるし、
日付や作者やバージョンはバージョン管理ソフトに任せればいい。
詳細な説明も attention も必要に応じて、だな。とにかく書かないで済むものは
書かないのが一番。 >>170
ありがとうございます。
>>171
そのバージョン管理ソフトに書かせるので心配ゴム用です。 表書くのってtableタグ使うしかないんでしたっけ?
それだとソース上で見づらいんで、
リストみたいに簡易記法があればいいんですけど。 doxygenって使ったこと無いんだけど、
ぶっちゃけて言うと、オススメですかい?
>>174
おすすめとは言えない
でも面白い使い道がある事は確か
実際に走らせてみて「おー」とか言って楽しむものだと思う >>174
クラス関連図とか、煩いクライアント向けのコーリングツリーを作るのに便利。
# 余程酷いソフトハウスに当たった経験があるのか、関数の依存関係を知りたがるクライアントがいるのよ。 >>175-176
ほっほー。
ありがとう。
「ある程度習熟するために勉強を要してめんどくさそうだ」
と思っていたが、試してみようかなあ。 >>177
コメント付いてないのも全部出力する設定で、
とりあえず手持ちのソースそのまま掛けてみたらいいよ。
それで出来上がるものが気に入れば、それから書き方に慣れていったらいいし。 Graphvizの使い方が秀逸だと思う
これは出力結果を印刷してじっくり眺めたい >>178
ありがとう。分かった、そうしてみるわ。 客先から小汚いソースを受け取ったら、取り敢えずDoxygenに掛けて
静的解析するのは基本だな。 >>171
subversionとかの置き換えキーワードもdoxygenは認識してドキュメント化してくれる。 ■ このスレッドは過去ログ倉庫に格納されています