Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Objective-CでDoxygen

タグ: Objective-C Doxygen

Objective-CのコードをDoxygen 1.5.7(MacPortで入れた)でドキュメント化してみる。

まずは適当なコードを用意。
今回は、主にカテゴリがどのようにドキュメント化されるかを調べる。

@interface Sample : NSObject
- (void)f1;
- (void)f2;
@end

/**
 * @brief Sample クラスの Foo カテゴリ
 */
@interface Sample(Foo)
- (void)bar;
@end

/**
 * @category Sample(Hoge)
 * @brief Sample クラスの Hoge カテゴリ
 */
@interface Sample (Hoge)
- (void)fuga;
@end

@implementation Sample

/**
 * @brief インタフェースに含まれるメソッド1。
 *
 * Sample::bar を呼ぶ
 */
- (void)f1
{
	[self bar];
}

/**
 * @brief インタフェースに含まれるメソッド2。
 *
 * Sample::fuga を呼ぶ
 */
- (void)f2
{
	[self fuga];
}

@end

@implementation Sample(Foo)

/// @name ローカルメソッド
//@{
/**
 * @brief Foo カテゴリのローカルメソッド
 *
 * @param[in] n 出力する整数
 */
- (void)baz:(int)n
{
	NSLog(@"%d", n);
}
//@}

/**
 * @brief Foo カテゴリのインタフェースに含まれるメソッド
 *
 * Sample::baz: を呼ぶ。
 */
- (void)bar
{
	[self baz:1];
}

@end

@implementation Sample (Hoge)

/// @name ローカルメソッド
//@{
/**
 * @brief Hoge カテゴリのローカルメソッド
 *
 * @param[in] d 出力する実数
 */
- (void)piyo:(double)d
{
	NSLog(@"%f", d);
}
//@}

/**
 * @brief Hoge カテゴリのインタフェースに含まれるメソッド
 *
 * Sample::piyo: を呼ぶ。
 */
- (void)fuga
{
	[self piyo:1.0];
}

@end

Doxyfileはこのように書いた。

OUTPUT_LANGUAGE = Japanese
EXTRACT_ALL = YES
EXTRACT_LOCAL_METHODS = YES
GENERATE_LATEX = NO

この設定でドキュメントを生成。
クラス構成はこのようになった。

クラス構成図

カテゴリはクラスとほぼ同じ扱いを受ける。
例えば Foo カテゴリの説明には(コメントから自動生成された以外の) Sample クラスへのリンクは存在せず、あたかも独立した1クラスのように見える。

カテゴリFoo

@category を明示すると、「クラス」の表記が「カテゴリ」に変わる。
が、それだけ。
他は @category を指定しない場合と全く同じである。

カテゴリHoge

「全く同じ」という割には Hoge カテゴリの説明が妙に薄いが、これは @implementation 文でクラス名とカテゴリ名の間にスペースを空けているため。
このように記述すると、Doxygen 1.5.7はインプリメント部の説明を全てクラスの方に持って行ってしまう。

クラスSample

カテゴリとクラスの違いは、唯一、メソッドリンクの自動生成箇所にのみ見受けられる。

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/146-e037f54d
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。