・目次
1.目的
・Javadocで使用されるコメントの書き方について記載する。
・コメントを記載した場合、Doxygenでどのように出力されるのか確認する。
参考:Doxygen(コメント)
2.コメントの付け方
・JAVADOCには、それぞれコメントの種類によって、タグが用意されている。
・ここでは、下記3.Doxygenでドキュメント作成確認にて、それぞれのタグと、その意味、その結果としてDoxygenで作成した場合の出力結果を示している。
・Doxygenの設定に関しては下記ブログを参照
→Doxygen4(DoxygenでGraphwizを使用) - Project_OKI’s diary
3.Doxygenでドキュメント作成確認(コメント)
/* * @file main.c * @brief メイン関数 * @date 2024/10/1 * $version: Ver 1.0 * @author OKI * @note MODEごとに計算するプログラム */ #include <stdio.h> #include "main.h" /** * @brief メイン関数 * @return プログラムの終了コード */ int main() { printf("test"); return 0; }
/* * @file main.h * @brief メイン関数用ヘッダ * @date 2024/10/1 * $version: Ver 1.0 * @author OKI */ /** *@enum 列挙 *@atention 注意事項 *@throw エラー条件 *@note メモ *@brief 概要 */ typedef enum{ en1, ///<0 en2, ///<1 en3, ///<2 }ENU; ///t_enum列挙 typedef enum{ t_en1, ///<0 t_en2, ///<1 }TENU;
///@brief t_enum列挙
///@throw エラー条件
///@note メモ
typedef enum{
t2_en1, ///<0
t2_en2, ///<1
}TENU2;
/** *@struct 構造体 *@throw エラー条件 *@note メモ *@brief 概要 */ typedef struct{ ENU enu1; /// int st1; ///< st1変数 int st2; ///< st2変数 }ST; ///T_ST構造体 typedef struct{ int t_st1; ///< t_st1変数 }T_ST; /** *@throw エラー条件 *@note メモ *@brief M_ST構造体 */ typedef struct{ int m_st1; ///< t_st1変数 }M_ST;
---JAVADOC出力結果---
・構造体がある場合、Data Structuresタブが生成される。
・Data Structuresタブには構造体のまとめが書かれる。
・///又は、/** */で囲むことにより、@タグの種類によって、設定できる。
・構造体をクリック時
・M_ST構造体をクリック時
・STクリック時
・T_STクリック時
上記のように構造体に関する情報がまとめられる。
・列挙型のまとめ
・main.h又は、ENUクリック時
4.Doxygenでドキュメント作成確認(実際に使用して作成した場合)
/** * @file main.c * @brief メイン関数 * @date 2024/10/1 * $version: Ver 1.0 * @author OKI * @note MODEごとに計算するプログラム */ #include <stdio.h> #include "main.h" /** * @brief 2倍にする関数 * @param int :setnum(整数) * @return int :引数を2倍した数値 **/ int CalcDouble(int setnum){ int set = setnum * 2; ///<2倍の計算 return(set * 2); ///<計算結果を返す。 } #define SETNUM1 10 ///<MODE1設定時設定値 #define SETNUM2 20 ///<MODE2時設定値 /** * @brief MODEを実行する関数 * @param T_ModeData g_ModeData(構造体) * @return MODEにより計算した数値 */ int ModeSel(T_ModeData g_ModeData){ int set = 0; ///<計算結果算出用変数 switch(g_ModeData.mode){ ///<MODE確認 case MODE1: ///<MODE1の時 set = CalcDouble(SETNUM1); ///<2倍の計算実行 break; case MODE2: ///<MODE2の時 set = CalcDouble(SETNUM2); ///<2倍の計算実行 break; default: ///<それ以外の場合 break; ///<何もせず終了 } return (set); } /** * @brief メイン関数 * @return プログラムの終了コード */ int main() { ///T_ModeData構造体の宣言と初期化 T_ModeData g_ModeData = { MODE1, ///<MODE1 {0,0,0}, ///<計算格納値 }; ///モードをループ(MODE1→MODE3を実行) for(g_ModeData.mode=MODE1;g_ModeData.mode<=MODE3;g_ModeData.mode++){ g_ModeData.modenum[g_ModeData.mode] = ModeSel(g_ModeData); ///<MODE実行 printf("modenum = %d\n",g_ModeData.modenum[g_ModeData.mode]);///<MODE計算結果出力 } return 0; }
/** * @file main.h * @brief メイン関数用ヘッダ * @date 2024/10/1 * $version: Ver 1.0 * @author OKI */ ///@brief MODE選択用ステート ///@note MODE1/MODE2/MODE3の設定用列挙型 typedef enum{ MODE1, ///<MODE1選択 MODE2, ///<MODE2選択 MODE3, ///<MODE3選択 }MODE; ///testMode選択用ステート typedef enum{ TMODE1, ///<TMODE1選択 TMODE2, ///<TMODE2選択 }TMODE; ///@brief MODE設定用構造体 ///@note この構造体を使用し、各モードの設定を行うこと。 ///modenumに各modeの計算結果を格納する。 typedef struct{ MODE mode; ///< 現在モード選択 int modenum[3]; ///< 計算用変数 }T_ModeData;
実行結果
・https://paiza.io/projects/UHcKLEDZyOcgSOxgv08j1w
---JAVADOC出力結果---
・main.cファイル
・main.hファイル
・T_ModeData構造体
参考:
・Doxygen(リストの作成方法)
・Doxygen(コメント付け方)
・ドキュメンテーションコメントからプログラミングを考える / 『エンジニアのためのJavadoc再入門講座』を読んだ - こまぶろ
・#12 【入門】Javadocまとめ|NXTEDCo., Ltd.
関連記事
ソフトウェア資料作成
・Doxygen1(Doxygenの魅力と活用法) - Project_OKI’s diary
・Doxygen2(Doxygenの導入及び使用方法) - Project_OKI’s diary
・Doxygen3(Javadocのコメント) - Project_OKI’s diary
・Doxygen4(DoxygenでGraphwizを使用) - Project_OKI’s diary
・Doxygen5(ファイルと関数のコメント) - Project_OKI’s diary