【コメント】doxygen【コンソメ】 at TECH
[2ch|▼Menu]
[前50を表示]
100:デフォルトの名無しさん
08/12/17 20:18:15 .net
@dateの後ろに付ける日付をsubversionが自動更新してくれるように
$Date$にしたら、出来たhtmlで日付の見出しが2重になってました。
もしかしてバージョン管理システムのキーワードをdoxygenが認識して
適当に見出し付きで整形してくれるんでしょうか。
マニュアルにそれらしい説明を見た覚え無いんですが。

101:デフォルトの名無しさん
08/12/21 21:45:55 .net
公式とかで、きちんとした例が*.hしかないと思うのは気のせい?

102:デフォルトの名無しさん
08/12/23 01:27:13 .net
ちょっとメモ。
doxygenで出力したRTFがどうも文字化けするので調べてみたら、\\'を\\\'に変換することで解消することが判った。
要は\を表すのにそれ自身をエスケープして\\とする必要があると言うことなのだろうか。もうちょい調べる必要はありそう。

103:デフォルトの名無しさん
08/12/27 23:00:37 .net
日本語がうまく通らない原因ってどこにあるの?

104:デフォルトの名無しさん
08/12/28 00:28:11 .net
>>100
doxygenは$date$を認識するみたいだね。だから@dateは書かなくていい


105:デフォルトの名無しさん
08/12/28 04:51:23 .net
Doxygen 1.5.8 age

106:デフォルトの名無しさん
08/12/28 05:06:03 .net
アップデートコネーから自分で作るか…

107:デフォルトの名無しさん
08/12/28 09:17:52 .net
>>101
ヘッダーに書けば十分だからじゃないかな。

でも、詳細をヘッダーに長々と書いてヘッダーが読みにくくなりそうなときは、詳細だけcppに分けて書くことはあるよ。それでもdoxygenはちゃんとまとめてくれる


108:101
08/12/28 15:47:03 .net
>>107 thx

十分かとも思えてきた。
概要かけばいいんだもんな。
漏れは最近doxygen向けのコメント付けはじめたからもうちょい使って慣れてみるわ

109:デフォルトの名無しさん
08/12/28 19:40:09 .net
>>103
Shift-JISコードの2バイト目に\を割り当てたマイクロソフトに原因がある。


110:102
08/12/29 14:53:28 .net
更に追加。他にも、エスケープすべき文字をエスケープしていない箇所を発見。
xyzzyの場合の正規表現置換でこれを行なうとかなり改善する。
(query-replace-regexp "\\(\\\\'..\\)\\([{}][^
][^t]\\)" "\\1\\\\\\2")
# 場当たり的だなぁ……

111:102
08/12/29 14:56:31 .net
あー、済まない、補足。

文字列中に出てくる「{」も「}」も、どちらもエスケープしなければならないと言うのが>110の対応。
但し、文字列中かどうかの判断を厳密に行ないたくないので手元のファイルで場当たり的に対応してある。

誰か、ソース拾ってきて対策してくれる奇特な人はいないもんかのぉ。

112:デフォルトの名無しさん
08/12/29 16:04:40 .net
>>111
文字列として表示されるべき「{」や「}」がエスケープされてないってこと?

いつもHTMLしか出してなかったんだけど、試しに手元にあるソースでRTF出してみたら、
こちらではリストをネストさせてるところで、上の階層の行末の書式文字の「{」が
普通の文字として扱われたりして、「{」と「}」の対応が崩れてエラーになってるっぽいです。
(いや、ネストされて表示はされてるから、書式文字以外に余分に「{」が付いてる?)

行末が特定の文字(「定」とか「得」とか)の場合になるみたいだけど、
条件がよくわかりません…

113:102
08/12/29 16:16:27 .net
>>112
2バイト文字の2バイト目に{}\のいずれかが来るケースで、エスケープされないようです。
# 「定」「得」どちらも該当しないようですが……

処が文字列を明示的に区切らないのがRTFの仕様らしくて、キーワードとしての{や}と区別が難しいのですよ。
実は>102の対策だけだと{}の対応が崩れてしまってrtfの一部だけしか読み込まれないことが判って気づいたんですが。
# 客先に実態の1/3程度しか分量がない資料を提出しちゃったのは内緒w

念のため確認したら、手元のDoxygenはCygwin同梱の1.5.5でした。
# さて、rtfを変換するツールを真面目に作るのとdoxygenそのものを修正するのとどっちが楽だろかw

114:デフォルトの名無しさん
08/12/29 16:26:38 .net
>>113
だいぶ前からエンコーディング指定して全部一旦 UTF-8 に変換されるようになったから
その手の問題は解決済みだと思ってるんだけど、何かバージョン上げれない理由でもあるの?

115:デフォルトの名無しさん
08/12/29 17:54:50 .net
cygwinの最新は1.5.5-1だね。
つまり、解決済みではないらしい。

116:デフォルトの名無しさん
08/12/29 18:19:03 .net
cygwinは使ってないので、それが理由かどうかは知りませんが、
1.5.6から1.5.7.1まではフレーム付きHTMLのツリービューで
英数字以外が文字化けするという問題がありました。
2日前に出たばかりの1.5.8でやっと解決されました。

117:デフォルトの名無しさん
08/12/29 19:13:27 .net
>>115
Windows ネイティブ版を使えない理由があるの?

118:デフォルトの名無しさん
08/12/29 20:15:40 .net
全部一旦 UTF-8 に変換されるようになったのは、1.5.2以降だから、
>>113, >>115 の cygwin版も UTF-8 に変換されるバージョンです。

最新版でも日本語RTFはかなり駄目な感じです。
手元のソースを処理させてみたら、目次の見出しの「目次」の後ろとか、
あちらこちらに見えてはいけない「\par」や「{」が見えて、
本文数ページで破綻します。

119:デフォルトの名無しさん
08/12/29 20:53:32 .net
HTML だと問題ないってことかな? HTML しか使ってないからよくわかんないや。

120:118
08/12/29 22:31:08 .net
昔、1.4.6でRTFを作ったことのあるソースを、設定をほとんど変えずに1.5.8に掛けても駄目でした。
1.4.6で作ったRTFの半分ぐらいしかファイルサイズがありません。
むしろ内部処理が UTF-8 になってから、おかしくなったんじゃないかという気がしてきました。

121:デフォルトの名無しさん
08/12/29 23:06:51 .net
折角色々対応してあったのを、UTF-8にしたのを機に捨ててしまったような感じだな。
この正月休みの間に暇があるようならソースでも見てみるか。

122:デフォルトの名無しさん
08/12/30 01:23:34 .net
過去のバージョンを取ってきて順に試してみました。
1.5.0までは日本語の RTF が生成できて
(おかしなところが無いかまではチェックしてませんが)、
1.5.1で、
"Warning: Output language Japanese not supported! Using English instead."
と表示され、日本語が表示できませんでした。
ここで一旦無かったことにされたようです。

123:デフォルトの名無しさん
08/12/30 03:40:46 .net
問題分かったかも。

id 437346 のバグレポートで日本語対応の議論がされてるんだけど、
報告者の人が提案した、
x080より大きいバイトが来たらマルチバイト判別フラグON、
次のバイトでフラグOFF、というのをそのまま採用してくれたらよかったのに、
0x80より大きいかの判断をそのままフラグに入れちゃってるから、
2バイト目が0x80より大きい場合に、その次のバイトまでエスケープされて、
それがエスケープされたら困るものの場合に不幸になってるということかと。

124:デフォルトの名無しさん
08/12/30 03:58:34 .net
repopかければいいのに。

rtfって何で読めるんだろう。AbiWord?ooo?

125:デフォルトの名無しさん
08/12/30 08:55:13 .net
>>123
事はそう単純じゃない。というか、もっと単純。
内部UTF-8をcp932に変換して、必要ならエスケープすべきなのにそれをしていないと言うのが>102=113の観測だろ。
例えば「ソソ」が「\'83\\\'83\\」にならないといけないのに「\'83\\'83\」になると。

それとも、二種類の問題が独立して存在しているのか?

126:123
08/12/30 10:22:07 .net
>>125
ああ、すいません。
>>123で書いたのは、1.5.8の場合の問題です。
>>102,,>>113の、.1.5.5の問題はエスケープされてないというので合ってると思います。
1.5.8でそれに対する対応が入れられたけど、方法がまずく、
今度は逆にエスケープすべきでないところまでされたという話。

127:デフォルトの名無しさん
08/12/30 11:17:38 .net
>>78
1.5.8で直った

128:デフォルトの名無しさん
09/01/08 07:49:37 .net
とりあえず保守ですが、あけおめ。

日本語rtf使えるようになるといいですね

自分はまだ皆様のようにハックに参加できるほど技術がないので、精進したいと思います。

129:102
09/01/08 09:55:41 .net
又更につまらない問題に遭遇。
折角修正したrtfがWordだと読めるのにOpenOfficeだと文字化けする。
例えば、「\'83\\」のような>125が指摘した例だと、「\'83\'5c」のようにしないといけないらしい。
あーもう、rtfを解析するしかないのかなぁ。
# doxygen1.5.8で変わっているらしいからそっちに手を出すのは避けたいし。

130:デフォルトの名無しさん
09/01/08 22:19:22 .net
解決しました。ありがとうございました。

131:デフォルトの名無しさん
09/01/10 14:59:07 .net
1.5.8 のrtfのエスケープバグのソースって
どのファイルなのかな?

132:102
09/01/10 15:17:25 .net
ちょっとLinuxに1.5.8をインストールしたので出力してみたが、これは酷いw
2バイト文字を全てコード出力しているのはいいが、>123のように無関係なコマンド文字まで巻き添えにしてしまっている。
おまけに、コマンド文字列を何故か\commentで括ってしまっているので収拾がつかない状態。

そうそう、html出力のツリービューも、(UTF-8)指定なのにも関わらずプロジェクト名がEUCで出力されるので化け化け。
誰かなんとかして〜w
# ってことで、>131に期待♪

133:デフォルトの名無しさん
09/01/11 01:06:49 .net
うはw ぼくとしては>102さんに期待してるんだけどっw

134:デフォルトの名無しさん
09/01/12 00:56:25 .net
>>131
rtfgen.cpp の void RTFGenerator::postProcess(QByteArray &a) です。
こちらを参考に。
URLリンク(bugzilla.gnome.org)

>>132
そういや最近プロジェクト名を日本語にしてなかったけど、これは…

どうやらDoxywizardのバグのようです。
テキストエディタでDoxyfile開いてプロジェクト名を修正して、
コマンドラインでDoxygenを実行したら、文字化けしませんでした。

135:デフォルトの名無しさん
09/01/12 02:36:31 .net
>>134 ソース位置ありがとう。
これって、よくわかってないけど、postProcess()で、ファイル全体を
エスケープしてるのかな。
もしそうなら、rtfでの表示される文字列以外も全部エスケープされて
しまい、上のバグが症状がでてるんじゃないかな?
rtf表示文字列だけをエスケープするようにするには、postProcess()
の中でやってちゃだめで、rtfgen.cpp(にあるか知らないけど)
で表示文字列をrtfタグ中に埋め込む時コード当たりでやらないといけなそう?

とりあえず、doxygenをWindowsでコンパイル出来る環境作り
からやらないといけないのが辛いorz


136:デフォルトの名無しさん
09/01/12 08:13:44 .net
>>135
頑張れw
Cygwinなら協力する。
# つーか、ソース拾ってきて自分でやれ>自分

137:134
09/01/12 21:40:12 .net
>>135
0x80より大きい値とmb_flagが1のときだけエスケープされるはずです。
1.5.7.1以前のバージョンではmb_flagが無くて、0x80より大きい値という条件しかなかったので、
マルチバイト文字の2バイト目が「{」や「\」などの場合におかしくなってました。

mb_flagをマルチバイト文字の1バイト目で1にすれば、
次のバイトが0x80以下でもエスケープされるという仕組みのはずですが、
mb_flagの設定方法がまずくて、2バイト目でクリアされなくて
さらに次のバイトまでエスケープされる場合がある、という状況です。

URLリンク(bugzilla.gnome.org)
で、T.Matsuyama氏が提示したコードが正しく動くはずです。

#そこまで分かってるな自分でやれ、と言われそうだ……
すいません、環境作りが荷が重いですorz

138:デフォルトの名無しさん
09/01/14 22:11:56 .net
バグ修正版バイナリ出来たよん。
URLリンク(www1.axfc.net)
T.Matsuyama氏パッチそのままです。
ばっちりっぽいです。
102さん、134さんありがとw

139:デフォルトの名無しさん
09/01/14 22:17:06 .net
おー、これは凄い。後で試してみるか。

140:デフォルトの名無しさん
09/01/27 01:28:30 .net
てか、>>137のURLが示すバグをreopenして開発者に教えてあげればいいんじゃないの?
アカウント持ってないから誰でもreopenできる設定なのかはわからないけど

141:デフォルトの名無しさん
09/01/27 07:49:20 .net
いかん、未だ試せてない……

142:デフォルトの名無しさん
09/01/30 01:55:55 .net
コメントが一切ついてないソースに
関数の定義部分だけ自動的に
タグを生成してくれるツールないですか?

143:デフォルトの名無しさん
09/01/30 02:14:58 .net
>>142 ctags?

144:デフォルトの名無しさん
09/01/30 07:39:05 .net
>>142
このスレ的には、タグというとDoxyfileのタグのことになるのだがそれでいいのかい?

145:デフォルトの名無しさん
09/01/30 07:42:20 .net
@が付くやつがいい

146:デフォルトの名無しさん
09/01/30 08:23:53 .net
ドキュメントつけしてない関数も出力するオプション?

147:139
09/02/15 17:55:27 .net
やっと>138を試せた。取り敢えず、cygwinからでも使えることと日本語が化けないことは確認した。
但し、OpenOffice(3.0)では{comment[^{}]}を取り除く必要があったこととTITLEなどのフィールドは
巧く変換できなかったけれど、これは元からそうなのかもしれない。
今度機会があれば、素直にMSwordに食わせてみるとしよう。

148:139
09/02/17 18:58:43 .net
cygwinで>138を動かし、できたRTFをWORD2000に食わせた。
全選択してフィールドの更新、画像アンリンクのマクロを動かして、
docに名前を変えて保存。一応、スタンダロンで使える資料になるようだ。

で、画像アンリンクのマクロって需要あるかな。あるようならどっかで公開するけど。

149:デフォルトの名無しさん
09/02/28 05:29:11 .net
doxygenのライセンスってGPLですよね。
doxygenのコメントを書いたソースって公開しないと駄目ですか?

150:デフォルトの名無しさん
09/02/28 05:39:00 .net
ならないよ
GPLのお絵かきソフトで絵を描いたようなもん

151:149
09/02/28 05:50:38 .net
>>150
ありがとうございます

152:デフォルトの名無しさん
09/03/03 10:33:16 .net
DoxyfileもGPLに該当しないのかな。
それとも、コメント部分は削除しておいた方が無難?

153:デフォルトの名無しさん
09/03/03 22:08:28 .net
ソフトのドキュメントを作るのにDoxygenを利用してもGPLにする必要なし。
ソフトの機能としてDoxygenを利用する場合はGPL。

154:デフォルトの名無しさん
09/04/06 21:16:11 .net
@a と @p ってどう使い分けてる?
どっちも文中の引数のフォントを変えるために使うものみたいだけど。

155:デフォルトの名無しさん
09/04/08 12:32:53 .net
\aは「特殊なフォント」ということで一般的にはItalicかな。
\pは\cと等価で「タイプライタフォント」ということで等幅フォントが使われる。
後は、実際の出力を見て検討したら?

156:154
09/04/09 00:04:14 .net
普通はどうする、ということは特になくて、見た目の好みで使えばいいのですか。
ヘルプを見ると、@aは "refer to member arguments" 、
@pは "refer to member function parameters" と書かれてて、
微妙に使い分けがあるようなないような、よく分からなかったもので。

157:デフォルトの名無しさん
09/04/09 07:14:32 .net
意味で使い分ければいいと思う。
フォントとかの体裁はCSSで変えられるんじゃなかったかな?やったこと無いけど。

158:デフォルトの名無しさん
09/04/09 08:11:53 .net
@a の argument が実引数で @p の parameter が仮引数なわけだけど、
コメント中では仮引数しか現れない気がする。実引数が現れることなんてあるか?

159:デフォルトの名無しさん
09/04/09 09:06:56 .net
恣意的に使い分ければいいんじゃね?

>>157
出力するものによって指定するスタイルシートや指定方法は違うけど、htmlならcss,だね。
やったことないけどw

160:デフォルトの名無しさん
09/04/10 04:10:58 .net
member argumentがクラスのメンバー変数ってことはないかな。

161:デフォルトの名無しさん
09/04/10 23:50:56 .net
>>158
@p param1 の値が @a xxx だったら〜
みたいな説明を書くのに使うとか?

162:デフォルトの名無しさん
09/04/25 21:37:10 .net
メソッドのコメントは、戻り値がなくても「@return なし」と明示的に書くべきでしょうか?
引数がない場合も同様に「@param なし」と書くでしょうか?

163:デフォルトの名無しさん
09/04/25 21:38:20 .net
前者はお好きにどうぞ。
後者は「なし」なんて引き数はないぞって警告が出るんじゃないかな?

164:162
09/04/25 21:45:11 .net
>>163
レスありがとうございました。
確認したら「@param なし」ではwarning argumentと出ましたのでこれは書かないようにします。

165:デフォルトの名無しさん
09/04/30 13:43:57 .net
今の大会は、開発環境の違いによる面白さもあると思う。
共通スペックでやるなら別に大会をおこせばよいと思う。

166:デフォルトの名無しさん
09/04/30 13:45:15 .net
>>165
誤爆しました。すみません。

167:デフォルトの名無しさん
09/04/30 23:56:10 .net
Doxygen 1.5.9 age

168:デフォルトの名無しさん
09/05/01 00:16:08 .net
さっきまでは1.5.8だったのに。早速試すぜ。

169:デフォルトの名無しさん
09/05/12 10:55:11 .net
ソースの先頭のコメントの 理想的なサンプル を教えて。
言語は問わないけど、出来ればCで。

170:デフォルトの名無しさん
09/05/12 18:22:26 .net
理想的かどうか知らんが、私の典型。
--
////////////////////////////////////////////////////////////////
/// \file foo.c
/// \brief あーたらこーたら
///
/// あーたらこーたらをあーたらこーたらするとかなんとか。
/// \date 2009/3-4
/// \author bar\@site
/// \attention なんだかんだ
/// \version hage.hige.hoge
//
--

171:デフォルトの名無しさん
09/05/13 04:06:28 .net
>>169
とりあえず最小限はこうだろ。 JAVADOC_AUTO_BRIEF オンで。

/** @file
* 簡単な説明.
* 詳細な説明
*/

170 のやつだと、ファイル名はどうせ名前変更したときに更新し忘れるし、
日付や作者やバージョンはバージョン管理ソフトに任せればいい。
詳細な説明も attention も必要に応じて、だな。とにかく書かないで済むものは
書かないのが一番。

172:デフォルトの名無しさん
09/05/13 09:19:41 .net
>>170
ありがとうございます。

>>171
そのバージョン管理ソフトに書かせるので心配ゴム用です。

173:デフォルトの名無しさん
09/05/13 16:20:47 .net
表書くのってtableタグ使うしかないんでしたっけ?
それだとソース上で見づらいんで、
リストみたいに簡易記法があればいいんですけど。

174:デフォルトの名無しさん
09/05/13 22:00:48 .net
doxygenって使ったこと無いんだけど、
ぶっちゃけて言うと、オススメですかい?


175:デフォルトの名無しさん
09/05/13 23:26:06 .net
>>174
おすすめとは言えない

でも面白い使い道がある事は確か

実際に走らせてみて「おー」とか言って楽しむものだと思う

176:デフォルトの名無しさん
09/05/14 09:55:19 .net
>>174
クラス関連図とか、煩いクライアント向けのコーリングツリーを作るのに便利。
# 余程酷いソフトハウスに当たった経験があるのか、関数の依存関係を知りたがるクライアントがいるのよ。

177:174
09/05/14 22:16:15 .net
>>175-176
ほっほー。
ありがとう。
「ある程度習熟するために勉強を要してめんどくさそうだ」
と思っていたが、試してみようかなあ。

178:デフォルトの名無しさん
09/05/14 23:43:40 .net
>>177
コメント付いてないのも全部出力する設定で、
とりあえず手持ちのソースそのまま掛けてみたらいいよ。

それで出来上がるものが気に入れば、それから書き方に慣れていったらいいし。

179:デフォルトの名無しさん
09/05/14 23:50:13 .net
Graphvizの使い方が秀逸だと思う
これは出力結果を印刷してじっくり眺めたい

180:177
09/05/15 06:46:11 .net
>>178
ありがとう。分かった、そうしてみるわ。

181:デフォルトの名無しさん
09/05/15 09:37:18 .net
客先から小汚いソースを受け取ったら、取り敢えずDoxygenに掛けて
静的解析するのは基本だな。

182:デフォルトの名無しさん
09/05/15 10:09:23 .net
>>171
subversionとかの置き換えキーワードもdoxygenは認識してドキュメント化してくれる。

183:デフォルトの名無しさん
09/05/21 13:35:09 .net
ちょっと詳しい説明を箇条書きで入れたいんだけど、
空白行が入るとパラグラフが終わってしまうので、空白行を一切入れないで
長い文章を書かなきゃいけなくなり、なんていうか
ソースコードのコメントが非常に見づらい。本末転倒な気がするんだけど、
空白行を無視してくれる方法とか、ない?

184:デフォルトの名無しさん
09/05/23 02:32:07 .net
>>183
ソースコード上でだけ行間が空いてればいいのなら、
全角スペースを入れておけばどうでしょう?
ドキュメント上で行が連結されたときに、余分な空白が入りますが。

ドキュメントでも行間が空くようにしたいのなら、
行頭の邪魔にならないところにでも「@n」を入れておくぐらいしか思いつきません。

185:デフォルトの名無しさん
09/05/24 13:15:10 .net
doxygenの文字化け対策
URLリンク(d.hatena.ne.jp)
ここに救われた俺がいる。

186:デフォルトの名無しさん
09/05/24 14:01:52 .net
doxygenであるライブラリのドキュメントを作った時、
そのライセンスってどこにどうやって記載すればいいの?

ドキュメント内に表示されるようにしたいんだけど。


187:174
09/05/24 16:39:03 .net
doxygen気に入ってきた。


C++とdoxygen最新版にて。

ドキュメント作ると名前解決に使う::がドキュメントにもりこまれたり盛り込まれなかったりする。
例えばNameS::MyClassが、
ドキュメントの100行目ではNameS::MyClassになっているのに
101行目ではNameSMyClassになっていたりする。

これはどう解決すればいい?


188:デフォルトの名無しさん
09/05/25 10:31:42 .net
>>187
このレスの流れを見ても分かるように、Doxygenは文字コードの扱いが未だ未だ不安定だったりする。
あんたの言う、「ドキュメント」がrtf出力ならこのスレにある対策版を使ってみた方がいいかもしれないし、
chm出力なら>185を参考にするといいかもしれない。

189:デフォルトの名無しさん
09/05/25 20:01:17 .net
>>186
@mainpageコマンドでメインページに入れるか、
@pageコマンドで独立したページにすればどう?

190:174
09/05/25 23:27:45 .net
>>188
ありがとう。
説明不足だったね。
ドキュメントはフツーのHTMLなんだよね〜。chmじゃなくて。

>185をやってみたら文字化けは解消したんだけど
>> ドキュメントの100行目ではNameS::MyClassになっているのに
>> 101行目ではNameSMyClassになっていたりする。
この現象は解決しないのだ。。。



191:186
09/05/25 23:41:59 .net
>>189
@pageコマンド
なんて初めて知ったわ。

どこかいい解説サイトとか紹介してくれる
お方、いらしたらお願い!


192:デフォルトの名無しさん
09/05/27 12:59:53 .net
>>191
doxygenに付いてくるサンプルも参考になるよ。
当然全部英語だけど、記述例のソースと
それを使って出力されたドキュメントがある。
コマンドの説明が知りたかったら、
>>1 のサイトの日本語版マニュアルを見ればいいし。

193:186
09/05/27 19:11:01 .net
>>192
そうか、ありがとう。
見てみるよ。

194:デフォルトの名無しさん
09/05/28 03:59:47 .net
いつの間にかDoxywizardもだいぶ使いやすくなったんだな

195:186
09/05/28 06:28:18 .net
俺は最近doxygenを使い始めて、
最初に
Doxywizard
を使ってかなり直感的に操作できたから知らなかったが、
そうなのか。前は使いづらかったのか。

grach

196:デフォルトの名無しさん
09/05/30 12:54:18 .net
#defineマクロ定義をドキュメント(html)に出力させたくて
URLリンク(www.doxygen.jp)
ここを見て

C++ code - 19 lines - codepad
URLリンク(codepad.org)

こんなの書いてみたんですが、
全然#defineマクロ定義が出力されません。

どうすれば良いでしょうか?


197:デフォルトの名無しさん
09/05/30 17:17:56 .net
>>196
define_test.h のファイルのページ自体は出来てる?
実際のファイル名と @file の後ろに書いたファイル名が合ってないとかはないかな、と思ったもので。

198:196
09/05/30 23:13:55 .net
>>197
URLリンク(loda.jp)
こんなHTMLが生成されました。

どうなんでしょう。。。?

199:197
09/05/31 00:25:04 .net
>>198
define_test.h ファイルのドキュメントのページができてないね。
>>196 のソースをコピペして同じ名前で保存してみたけど、
こっちじゃちゃんと出力されてるよ。

Doxyfile 晒してもらえるなら、何が違うか比べてみるけど。

200:197
09/05/31 00:31:38 .net
>>198
もしかして、SHOW_FILESがOFFになってない?
Doxywizard使ってるなら、ExpartのBuildの下の方。

201:196
09/05/31 04:59:33 .net
>>200
丁寧にありがとうございます。
Doxyfileは以下です。
C++ code - 1503 lines - codepad
URLリンク(codepad.org)
お願いします。

202:196
09/05/31 05:04:41 .net
追記:
  SHOW_FILES=NOになっていましたが、
  YESにしても変わりませんでした。
  私の環境は
  windows xp sp2
  doxygen 1.5.9です。

203:197
09/05/31 05:45:10 .net
>>201
WARN_IF_DOC_ERROR を ON にしたら判明した。
ENABLE_PREPROCESSING が OFF だとマクロは見てくれないらしい。

204:197
09/05/31 05:51:37 .net
補足

WARN_IF_DOC_ERROR を ON にしたら、
「マクロにコメント書いてるけど、ENABLE_PREPROCESSINGがOFFだからスキップしたよ」
というようなメッセージが表示された。

205:196
09/05/31 14:59:44 .net
>>204
ありがとうございます。
WARN_IF_DOC_ERRORとENABLE_PREPROCESSINGをYESにしてみましたが、
結果は代わりありませんでした。
Doxyfileはこちらです。
URLリンク(codepad.org)
設定を読み込み直していないなどということはなく。
doxygenのウィンドウに表示される情報は
URLリンク(codepad.org)
の通りです。

すみませんがよろしくお願い申し上げます。

206:196
09/05/31 22:27:30 .net
追記:
  テキストエディタでDoxyfileを開き、
  = NO
  を検索して全て
  = YES
  に置換してみました。
  それでdoxygenを走らせたところ、見事#defineは出力されました。
  やはり設定が問題な様です。



207:196
09/05/31 22:43:14 .net
どこの設定が問題なのか探るために
Doxyfileにて二分木法的にNOをYESに置換してみました。

ファイルのど真ん中の行を基準に上だけないし下だけを
全部NO→YES置換を行いました。

しかし、このどちらも#defineが出力されません。
やはり複数の設定項目が関わっているようです。

208:196
09/05/31 22:56:12 .net
解決しました。

正解は
・ENABLE_PREPROCESSINGをYESにする。
・SHOW_FILESをYESにする。
でした。両方が同時に満たされていないとだめなようです。

お手数をおかけ致しました!

209:197
09/06/01 01:23:37 .net
>>205-208
解決したようなのでもういいかもしれないけど、
WARN〜系の設定は、出力状態を変更させるためのものではなくて、
コメント付けてるのに出力されない設定になってるとか、
記述漏れがあるとか、そういうエラーメッセージを表示するためのもの。

今後何かうまくいかないときに参考になるかもしれないので念のため。

210:196
09/06/01 05:54:55 .net
>>209
はい、WARN〜系の設定に関して、よく頭に入れておきます。

ありがとうございました。

211:デフォルトの名無しさん
09/06/01 23:20:24 .net
Windows XP SP2, doxygen 1.5.9です。
htmlドキュメントを生成すると、
本文中のstd::coutのようなスコープ解決演算子が消えてしまい、
stdcoutになってしまうことが多々あります。
再現するソースやその結果のhtml, Doxyfileは以下の様です。
URLリンク(loda.jp)

具体的にはこのソースにて
 Test::foo()は
 numをstd::coutに出力します。
になるはずが
 Test::foo()は
 numをstdcoutに出力します。
になってしまいます。

再現条件は絞れておりません。
どうかお知恵をおかしください。
よろしくお願い申し上げます。


212:デフォルトの名無しさん
09/06/02 02:54:51 .net
>>211
理由はよく分からないけど、std::coutの前後に空白を入れたら正しくなりました。
識別子っぽいものに非ASCII文字がくっついてたらおかしくなるってことじゃないかと思うんですが。

213:211
09/06/02 06:08:56 .net
>>212
たしかに、前後に空白で正しく表示されます。
本当に適用したいソース(再現用ソースでない)でもうまく表示されます。
ありがとうございました。

214:デフォルトの名無しさん
09/06/02 23:53:16 .net
>>195
今のdoxywizardはver.1.5.8(去年の暮れ頃)からですね。

基本的な設定項目だけのwizardモードと、
設定可能な項目が全部表示されるexpertモードの2本立てというのは
昔も今も変わりませんが、
設定を変えたら保存しないと実行できなかったとか、
設定項目のセクション切り替えがタブで、expertモードだと
たくさん並んでるのをぐるぐるスクロールさせる必要があったとか、
細かいところで少し不便でした。

マニュアルに載ってるスクリーンショットは旧バージョンのような気がします。

215:デフォルトの名無しさん
09/06/02 23:58:29 .net
doxygenで、1カ所に書いたコメントを複数箇所で参照する方法はありますか?

例えば、
hoge.h内で@version 1.1.1
という記述が同じhoge.h内で他にも複数箇所に登場する場合、
全部に@version 1.1.1と書いてしまうとバージョンを上げる時に
全箇所を手動で修正する羽目になってしまいます。

どうにかする手段はありますか?



216:デフォルトの名無しさん
09/06/03 02:07:50 .net
>>215
設定ファイルのALIASESで@version 1.1.1に別名をつければ、
バージョンを上げるときはそこだけ変えればOK

というのはどうでしょう?

217:デフォルトの名無しさん
09/06/03 03:43:33 .net
質問です。

いままでのプログラムは以下のようにコメントしていたのですが、
doxygenでは/** */の形式にしないとドキュメント作成はできないのでしょうか?
コメント部分を目立たせたいので、できれば今までのコメント形式を維持したいのですが・・

今までのコメント例
//********************************************************
// Test.cpp
// 2009.09 by Tester
// テスト用のクラス
//********************************************************

これを
/**
*
*
*
*/
形式にするのは少し抵抗があります

218:デフォルトの名無しさん
09/06/03 08:40:05 .net
>>217
特定の形式にしないと、ドキュメントにしないコメントと区別できないですからね……

使えるコメント形式はマニュアルの「Documenting the code」にいろいろ例があります。
(日本語マニュアルは古くて少し情報が少ないです)

今までのに比較的近いのは
/*****************************************************//**
* Test.cpp
* 2009.09 by Tester
* テスト用のクラス
*********************************************************/
でしょうか。

219:デフォルトの名無しさん
09/06/03 10:41:33 .net
>>217
最初と最後の //****** はそのままで、途中の行だけ先頭の//を3文字にすればいい

220:デフォルトの名無しさん
09/06/03 10:48:32 .net
つまり、こうだな。
//********************************************************
/// \file Test.cpp
/// \date 2009.09
/// \author Tester
/// \brief テスト用のクラス
//********************************************************


221:デフォルトの名無しさん
09/06/03 16:06:28 .net
>>217
俺も抵抗があったけど、
変えてみたら意外と平気だったよ。
要は見慣れるかどうか。

222:デフォルトの名無しさん
09/06/03 16:09:51 .net
>>216
ALIASES
なんてものがあるのですね。
ありがとうございます、試してみます。

223:デフォルトの名無しさん
09/06/03 22:23:44 .net
>>218-221 thanks

ですが、ファイルの最初のコメントを
//********************************************************
/// \file Test.cpp
/// @file TEST.cpp
//********************************************************

と色々やってみたのですがうまくいきませんでした・・
ファイルの最初だと///ではドキュメント化されないのでしょうか
クラス宣言前や関数前では///で書いたコメントはちゃんとドキュメント
のコメントとなっておりました。

ちなみに、ファイル一覧からコードを見るとなぜか明朝体?で表示されてしまいます。
以下のドキュメントのようにゴシック表示をしたいのですが、Font設定はどのようにすればよいでしょうか?
URLリンク(www.ee.t-kougei.ac.jp)



224:デフォルトの名無しさん
09/06/03 22:57:41 .net
追加で質問失礼。

Player.hの内容↓

/** @brief クラスの簡易説明
 * このクラスの使用目的・使用方法など詳しい情報を書く。
 * @todo 必要であれば記述
 * @bug バグがあれば記述
*/

#if !defined (__PLAYER_H__)
#define __PLAYER_H__

class CPlayer
{
...
}


というプログラムだと、インクルードガードのほうに

マクロ定義
#define __PLAYER_INFO_BASE_H__
クラスの簡易説明  * このクラスの使用目的・使用方法など詳しい情報を書く。

というドキュメントが付いてしまうのですが、
インクルードガードは一番上に書かなければいけないのでしょうか?

できればファイルに関するコメントを一番上に記述したいのですが・・・

225:デフォルトの名無しさん
09/06/03 23:10:52 .net
さらに追加質問ですいませんorz


出力されたドキュメントは任意の名前のフォルダに作成されますが、
index.htmlが他の細かいファイルと一緒のフォルダにあるため探しづらいです。
そのため、index.htmlだけ残して他のファイルを別のフォルダに押し込む
というようなフォルダ構成を構築したいのですが、そういったことは可能でしょうか?

226:デフォルトの名無しさん
09/06/03 23:33:53 .net
>>223
ファイルの最初のコメント:
ファイル名の大文字・小文字の問題かもしれません。
ファイル名無しで @file だけにしてみてはどうでしょうか。

フォント:
フォントはデフォルトのスタイルシートで、
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
と設定されてるので、
特にカスタマイズしてなければゴシックで表示されるはずなんですが。

>>224
対象を指定しないドキュメントは、直後にあるものに関連づけられます。
ファイルに関するコメントにしたいなら、@file が必須です。

227:デフォルトの名無しさん
09/06/04 08:53:01 .net
>>224
本題とは直接関係ないと思いますが、ドキュメントに「 * 」が入ってるのが気になりました。
コメント行頭の「 * 」のところ、全角スペース使ってませんか?

228:デフォルトの名無しさん
09/06/04 23:00:02 .net
>>226-227
thanks.

一度doxygenを全削除して再インストールしたら
なんとかファイル要約関連のコメントはでるようにできました。

229:デフォルトの名無しさん
09/06/05 00:21:06 .net
また質問なのですが、
以下のような複数行について同じコメントをつけたい場合は
何かうまい記述法はありますか?

例:

/// 3D座標を示す値.
int nX;
int nY;
int nZ;

このままですと、nXだけにコメントがついてしまうため、
3つの変数全てに同じコメントを出すようにしたいのですが・・・

int nX;///< 3D座標を示す値x.
int nY;///< 3D座標を示す値y.
int nZ;///< 3D座標を示す値z.

これだと冗長な感じでちょっと抵抗があります

230:デフォルトの名無しさん
09/06/05 02:50:49 .net
っ nameタグ

231:デフォルトの名無しさん
09/06/05 09:01:35 .net
>>229
普通は、一つのコメントで括られるような変数は構造体に入れるもんじゃね?

232:デフォルトの名無しさん
09/06/05 19:33:13 .net
>>231
おお、良いこと言った!

233:デフォルトの名無しさん
09/06/05 22:02:00 .net
>>231
座標とかだと、配列の方が扱いやすいかも
構造体の方が見やすいけどね

234:デフォルトの名無しさん
09/06/06 08:55:20 .net
C++ code - 50 lines - codepad
URLリンク(codepad.org)
これからdoxygenでhtmlドキュメントを生成させると、
メンバ一覧のページの上にある目次の部分は
すべてのメンバ一覧
Public メソッド
void foo (bool)
void foo (short)
void foo (int)
void foo (long)
void foo (double)
void bar (bool)
void bar (short)
void bar (int)
void bar (long)
void bar (double)
となります。このように並ぶと微妙に見づらいので
すべてのメンバ一覧
Public メソッド
foo系のメンバは
 void foo (bool)
 void foo (short)
 void foo (int)
 void foo (long)
 void foo (double)
bar系のメンバは
 void bar (bool)
 void bar (short)
 void bar (int)
 void bar (long)
 void bar (double)
の様にコメントをこの場所に入れたいしたいのですが、可能でしょうか?

235:デフォルトの名無しさん
09/06/06 09:13:44 .net
>>234
マニュアルの「Grouping」(日本語版マニュアルだと「グループ化」)のページを見てください

236:デフォルトの名無しさん
09/06/06 09:55:14 .net
>>235
それで出来るのですね。
ありがとうございます。見てきます。

237:デフォルトの名無しさん
09/06/06 11:53:22 .net
doxygenで作ったthtmlドキュメントの
若干ながらフォントサイズが小さすぎると感じます。

このフォントサイズを大きくすることはできますか?


238:234
09/06/06 20:44:39 .net
C++ code - 17 lines - codepad
URLリンク(codepad.org)
とりあえずこの様にしてみました。
/** document former */
がメンバ関数全部について、
/** document latter */
がメンバ関数void func_1_InGroup1()だけにつくかと期待したのですが、
結果は
void Test::func_1_InGroup1に
document former document latter
と付いただけでした。
どこが誤っているでしょうか?
よろしくお願いいたします。

239:234・238
09/06/06 20:56:51 .net
C++ code - 26 lines - codepad
URLリンク(codepad.org)
とりあえずこれで行けそうです。
・・・法則性がわからない。

240:デフォルトの名無しさん
09/06/06 22:29:27 .net
法則性はその>>238>>239の違いの@nameの有無の部分ですよ。

マニュアルより:

ブロックの開標識の前に、独立したコメント・ブロックを置くこともできます。
このブロックは、@name (または、\name) コマンドを含む必要があり、
グループのヘッダーを指定します。
そうしたければ、グループに関するより詳しい情報をコメント・ブロックに
含めることもできます。

241:239
09/06/06 22:36:14 .net
>>240
doxygen用語の理解が今ひとつ足りなかったようです。
親切にありがとうございました。


242:デフォルトの名無しさん
09/06/07 12:54:49 .net
Use built-in class diagram generator
だと継承に関するクラス階層図がうまく表示されますが、
Use dot tool from the GraphViz package
だとうまく表示されません。

このようなHTMLになってしまいます。
URLリンク(loda.jp)
(これには再現する簡単なソースとDoxyfile、出来上がったHTMLが含まれています。)

環境はWindows XP SP2で、
doxygenはdoxygen-1.5.9-setup.exeを使ってインストールしました。
GraphVizはgraphviz-2.22.2.msiを使ってインストールしました。

GraphVizの問題だとしたら若干スレ違いかもしれませんが、
よろしくお願いいたします。

243:242
09/06/07 13:43:31 .net
C++ code - 25 lines - codepad
サンプルソースが腐ってたので
URLリンク(codepad.org)
これでお願いします。

244:デフォルトの名無しさん
09/06/07 23:01:58 .net
>>242-243
DOT_FONTSIZEが小さい(デフォルト値は10)のが気になりますが、
正直なところデフォルト設定と余りに違いすぎて、それだけなのかどうかは何とも。

もしこだわって作りこんだ設定でないのなら、一度デフォルト設定に戻して、
最低限必要なところだけ変えるようにしてみてはどうでしょう?

デフォルト設定にはメニューから[Settings]→[Reset to factory defaults]で戻せます。

245:デフォルトの名無しさん
09/06/08 00:35:20 .net
>>242
どこを問題視したいのか判らんが、HAVE_DOTがNOだからクラス階層図が出ないのは当たり前なんだが。
つーか、>>244も含めて
Doxyfile位真面目に読んでくれ。

246:242
09/06/08 06:55:17 .net
>>244-245
ありがとうございます。
教えを頼りに読んできます。

247:244
09/06/08 08:39:21 .net
>>242, >>245
>>242のドキュメントではdotファイルが吐かれてるし、
クラス階層図はdotファイルの内容どおりに生成されてます。
文字が読めないのはフォントサイズが4のためです。
コラボレーション図はdotにノードがなぜか出力されてませんが、
画像ファイル自体は真っ白なのが存在していて、
dotファイルの内容どおりには生成されているといえます。

なので、これらはHAVE_DOT=YESの状態で生成されたはずです。
DoxyfileはHAVE_DOT=YESにする前に保存したものと思われます。
dotの中身が異常なので、ほかに問題があると思います。

248:デフォルトの名無しさん
09/06/08 15:59:54 .net
Doxygenて
__declspec(dllexport) int WINAPI MyFunc(int arg);
とか、それを簡略化して
#define API(type) __declspec(dllexport) type WINAPI
とした場合に
API(int) MyFunc(int arg);
みたいな宣言もちゃんと処理してくれる?


249:242
09/06/08 16:17:43 .net
>>247
ありがとうございます。
全然こだわって作りこんだ設定ではありませんので、
デフォルトに戻すことに抵抗はありません。

いろいろ教えの通り試してみます!


250:デフォルトの名無しさん
09/06/08 22:09:14 .net
URLリンク(appleloader.bbsnow.net)
Exportタブに何も表示されないのですがバグですか・・・?

ノートPCでは表示されました

両方 WinXP 32bit SP3 です

251:デフォルトの名無しさん
09/06/08 22:48:53 .net
>>248
__declspec()は関数と誤認識されるので、
PREDEFINED で __declspec(x)= を定義するなどして、
プリプロセス時に取り除いてやる必要があります。
(マニュアルの「Preprocessing」に書かれてます)

252:デフォルトの名無しさん
09/06/08 23:24:43 .net
>>250
eeepc + winxp でやってるけど、ウチも全く同じ現象になるよ。

253:250
09/06/09 19:08:32 .net
レスありがとう。

じゃあエクスポートタブの設定はできないのですかね・・・?

日本語マニュアルを作成したいので以下の設定をしたいのですが

設定する箇所は2箇所です。まずProject内にある「OUTPUT_LANGUAGE」をJapaneseにします。これで日本語マニュアルが作成されます。ただ、このままだと文字化けが起こります。

 続いて、Inputの中にあるINPUT_ENCODINGに「CP932」と文字を打ちます。CP932というのはMicrosoftなどが拡張したShift-JIS文字コードです。Visual Studioなどのソースコードはこの文字コードを指定するとDoxygenでうまく読み込んでくれます。

改善方法分かる人いたらアドバイスください よろしくお願いします

254:デフォルトの名無しさん
09/06/09 19:38:26 .net
>>253
設定内容を保存したファイルはテキストなので、直接編集できますよ。

255:250
09/06/09 19:54:02 .net
>>254
お!
ありがとうございます

256:デフォルトの名無しさん
09/06/09 21:16:16 .net
>>255
念のため。
PROJECT_NAME 等に日本語を使ってる場合、UTF-8で保存されてるので気を付けて。

257:デフォルトの名無しさん
09/06/11 21:35:53 .net
doxygen20090611.zip - uploader_nrnrnr
URLリンク(loda.jp)
このaaaaaa.hとDoxyfileからdoxygenでhtmlドキュメントを生成させると、
 aaaaaa.h
 ソースコードを見る。
 マクロ定義
 #define ABS(x)
 #define MAX(x, y)
 #define MIN(x, y)
 #define MYMACRO "表示されたくない。"
このように表示されるのですが、私は最後の
 #define MYMACRO "表示されたくない。"

 #define MYMACRO
の様にしたいと思っております。
また、各マクロの説明文にある
 値:〜〜
というのも非表示にしたいと思います。

どうすればよろしいでしょうか?


258:デフォルトの名無しさん
09/06/11 22:23:30 .net
関数テンプレートなどの
テンプレート引数を出力する項目は作れませんか?

259:デフォルトの名無しさん
09/06/12 01:24:59 .net
>>257
MAX_INITIALIZER_LINES を 0 にするのはどうでしょう?
変数の初期値なども全部表示されなくなりますが。

260:デフォルトの名無しさん
09/06/12 01:58:14 .net
>>258
@tparamで出来るらしいです。

261:258
09/06/12 08:02:39 .net
>>260
ありがとうございます。
助かります。

262:257
09/06/12 19:21:47 .net
>>259
MAX_INITIALIZER_LINESを0にする方法でいけそうです。
ありがとうございます。

263:デフォルトの名無しさん
09/06/12 19:54:28 .net
doxygenの公式サイト(英語版)
が見たいのだが、リンクが死んでいる気がする。

それとも単に落ちただけだろうか?

264:263
09/06/12 23:59:05 .net
単に落ちただけだったようだ。
勝手に騒いでスマソ。

265:デフォルトの名無しさん
09/06/20 18:37:54 .net
保守


266:デフォルトの名無しさん
09/06/20 21:38:29 .net
Windows XP SP2, doxygen 1.5.9です。
Sample.h
URLリンク(codepad.org)
これでhtmlドキュメントを生成させますと、
クラス階層図(継承関係)
が表示されません。
class Sample は std::runtime_error をpublic継承しているので
この継承の様子をGraphVizでグラフ表示させたいと思っているのですが、
どうすればよろしいでしょうか?

ソースとDoxyfile、出来上がったHTMLは
URLリンク(loda.jp)
です。
同じDoxyfileを使っても、関数の呼び出し関係は
うまくGraphVizでグラフ化されて表示されています。

よろしくお願いいたします。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

2931日前に更新/162 KB
担当:undef