ããã°ã©ãã®ããã®doxygen
doxygenãšã¯ããœãŒã¹ã³ãŒãå
ã«å«ãŸããèŠå®ã®åœ¢åŒã®ã³ã¡ã³ã(doxygenã³ã¡ã³ã)ãããããã¥ã¡ã³ããèªåçæããŠãããã·ã¹ãã ã§ããã
doxygenã§ã¯åçš®ããã°ã©ã èšèªããµããŒããããŠããããããã§ã¯ïŒ£ããã°ã©ã äžå¿ã«è©±ããé²ããŠããã
èªåã¯æ®æ®µïŒ£ã§ããã°ã©ã ãæžããŠããããdoxygenã³ã¡ã³ãã«ã€ããŠåå¿é²çãªãã®ã欲ãããšæããŸãšããŠã¿ãã
ãããã£ãçµç·¯ãããã®ã§ããã®ãŸãšãã¯å°ãæ
å ±ã«çå¯ãããããšæãã
ãã®ãŸãšãã§ã¯ doxygen 1.8.9.1 ãããŒã¹ã«ããŠãããèªåã®ç°å¢(Mac OS X)ã§ã®è¡šç€ºããµã³ãã«ãšããŠæããŠããã
åºåçµæã®æèšãå€ãã£ããããã ããããä»ã®ç°å¢ã§ãããã»ã©å€§ããªéãã¯ãªãã ããã
doxygenã¯æ°å€ãã®èšå®ãæã€ããèªåã¯ã»ãšãã©ããã©ã«ãã®ãŸãŸã§äœ¿çšããŠããããããã䜿ãã«åœãã£ãŠèª¿æŽããæ¹ãè¯ããã®ãããã
ãã®ãããªèšå®ã«é¢ããŠã¯ã[7] ã€ã³ã¹ããŒã«æã«èšå®ãããã®ãšããŠãŸãšããŠãããã
[1] åãªãããã°ã©ã ãdoxygenã«ããã
[4] ç®æ¡æžããšé£çªãªã¹ã
[6-1] ç·åæŠèŠ(ã¡ã€ã³ããŒãž)ãšè«žæ
å ±
@mainpage, @page, @section, @subsection, @par
[6-2] ãã¡ã€ã«ããããšå€æŽå±¥æŽ
@file, @brief, @author, @date, @version, @copyright, @par
@brief, @param, @retval, @return
[6-4] 颿°ã®äºåæ¡ä»¶ãšäºåŸæ¡ä»¶
[6-5] 颿°ãªã©ã®èªåãªã³ã¯
[6-6] 泚æãèŠåããã°ãtodo
@remarks, @attension, @warning, @bug, @note, @todo
[7] ã€ã³ã¹ããŒã«æã«èšå®ãããã®
æ¬å®¶(è±èª): http://www.doxygen.org/
æ¥æ¬èªç: http://www.doxygen.jp/
æ¥æ¬èªã§éåžžã«å©ããããæ®å¿µãªãã察象ããŒãžã§ã³ãå€ãã
Graphviz: http://graphviz.org/
å³åœ¢æç»ããã±ãŒãžãdoxygenãã䜿ãã
[1] åãªãããã°ã©ã ãdoxygenã«ããã
doxygenã¯ããœãŒã¹ããã°ã©ã ã«å«ãŸããŠããç¹æ®ãªåœ¢åŒã®ã³ã¡ã³ã(doxygenã³ã¡ã³ã)ãããšã«ãããã¥ã¡ã³ããèªåçæããŠãããã·ã¹ãã ã ããdoxygen圢åŒã®ã³ã¡ã³ããå
¥ã£ãŠãªãæ®éã®ïŒ£ã®ããã°ã©ã ãå
¥åããŠãããããªãã®åºåãããŠãããã
以äžã®ãããªãã¡ã€ã«(hello.c)ã®å
é ã«/** @file ã **/ã®è¡ã ããå
¥ããŠã¿ãŠdoxygenã«ãããŠã¿ãã
/** @file hello.c **/ #include <stdio.h> const char greeting[] = "Hello, World"; int main(int argc, char **argv) { puts(greeting); return 0; }
å
é ããŒãžã§ããã¡ã€ã«ããšããã¿ããã¯ãªãã¯ãããšä»¥äžã®ãããªè¡šç€ºã«ãªãããhello.cãããªã³ã¯ã«ãªã£ãŠããã
ãhello.cããã¯ãªãã¯ãããšä»¥äžã®ãããªè¡šç€ºã«ãªãã
ãã®ããã«ãincludeãã¡ã€ã«ã®äŸåé¢ä¿ããå®çŸ©ãããŠãã颿°ã倿°ãªã©ã®äžèЧãã¡ãããšè§£æããŠåºåããŠãããã(ããã«ã¯ç¡ããããã¯ããæ§é äœãåæåãããã°è§£æããŠåºåããŠãããã)
æ®å¿µãªããããã以äžã®æ
å ±ã¯åºãŠããªãããããã§ããã ã®ïŒ£ããã°ã©ã ãããããã ãã®æ
å ±ãæœåºããŠãããã
ãã®åºåã«èä»ãããŠããã®ãdoxygenã³ã¡ã³ããšãªãã
ã¡ãªã¿ã«ãããã°ã©ã ã§ã¯ãããã§ç€ºãã/** @file ã **/ã®è¡ã¯å¿
é ã§ããããŸãããã¡ã€ã«åãå¿
ãäžèŽããŠãªããã°ãªããªãããããééããšäœãæçšãªåºåãæãããªãã
doxygenã³ã¡ã³ãã¯ä»¥äžã®åã€ã®åœ¢åŒãããã
â /** ïœ */ â¡ /*! ïœ */ ⢠/// ïœ â£ //! ïœ
ååçã«ããããã¯æžãæ¹ãç°ãªãã ãã§å€§ããªéãã¯ãªã(埮åŠãªéãã«ã€ããŠã¯ãããšã§è§Šãã)ã äŸãã°â ã®åœ¢åŒãªãã°ã/**ã®éšåãããŒãšãªãããã§ã以äžã®ããã«è²ã
ãªèšè¿°ã®ä»æ¹ãã§ããã
/** ãããã¡ã®èª¬æ */ unsigned char Buf[1024];
/** ãããã¡ã®èª¬æ **/ /*** ããã¯doxygenã³ã¡ã³ãã§ã¯ãªãã§ã®ç¡èŠããã ***/ unsigned char Buf[1024];
/** * ãããã¡ã®èª¬æ */ unsigned char Buf[1024];
/** ãããã¡ã®èª¬æ */ unsigned char Buf[1024];
/*************************************//** * ãããã¡ã®èª¬æ ******************************************/ unsigned char Buf[1024];
æåŸã®äŸã¯ãéåžžã®ã³ã¡ã³ã/*****...*/ã®åŸãããâ ã®ã³ã¡ã³ããå§ãŸã£ãŠãã圢åŒã ã
ãããã¯ããã¹ãŠåãåºåã«ãªãã
ããã«ãâ ãâ£ã®ã³ã¡ã³ãã®å·Šç«¯ã«<ãä»ããããšã«ãããè¡ã®åŸãã«doxygenã³ã¡ã³ãã眮ãããšãã§ããã
â ' /**< ïœ */ â¡' /*!< ïœ */ â¢' ///< ïœ â£' //!< ïœ
å
ã®äŸã䜿ã£ãŠç€ºããšã以äžã®ããã«ãªãããããåããã®ãåºåãããã
unsigned char Buf[1024]; /**< ãããã¡ã®èª¬æ */
ã¡ãªã¿ã«ãâ ãšâ¡(/*ã§å§ãŸã)ãâ¢ãšâ£(//ã§å§ãŸã)ã¯ããäºãã«åãåºåãšãªãããâ ãâ¡ç³»ãšâ¢ãâ£ç³»ã®åºåã¯åŸ®åŠã«ç°ãªãããã ã
unsigned char Buf1[1024]; /**< â ãâ¡ç³»ãããã¡ã®èª¬æ */ unsigned char Buf2[1024]; ///< â¢ãâ£ç³»ãããã¡ã®èª¬æ
â ãâ¡ç³»ã¯å€æ°è©³è§£ãå¥ã«èšããããŠè¡šç€ºãããããã§ãããã倿°ãæ¬ã®ãBuf1ãããªã³ã¯ã«ãªã£ãŠãããã倿°è©³è§£ãæ¬ã«é£ã¶ããã«ãªã£ãŠããã
â¢ãâ£ç³»ã¯å€æ°æ¬ã«ãŸãšãŸã£ãŠåºåãããã
ãããã¯ã奜ã¿ã«å¿ããŠäœ¿ãåããã°è¯ãã ããã
ã¡ãªã¿ã«â 'ïœâ£'ã®åœ¢åŒã¯ãã©ã¡ãããšãããšæ§é äœã®ã¡ã³ã説æããåæåã®é
ç®èª¬æã§äœ¿ãã®ãæ¬æ¥ã®çšéãªã®ã ããã
/** è§£æã®ç¶æ
å€ **/ enum CommandSta { IDLE, /**< ã¢ã€ãã« **/ ACT, /**< 皌å **/ SLEEP, /**< åæ¢äž **/ };
/** è§£æã®ç¶æ
å€ **/ã¯â 圢åŒã®doxygenã³ã¡ã³ãã§ããã®ã§ããåæåè©³è§£ãæ¬ã«åºåãããŠããã
ããã/*** è§£æã®ç¶æ
å€ ***/ãªã©ãšããŠã¯åºåãããªããªãã
doxygenã³ã¡ã³ãå
ã®æç« ã¯ãå®éã®æ¹è¡äœçœ®ãšã¯ç¡é¢ä¿ã«ãè©°ããã ãè©°ããŠè¡šç€ºãããã æç€ºçã«æ¹è¡ãããå Žåã¯ãäœãç¡ã空ã®ã³ã¡ã³ãè¡ãæãå¿
èŠãããã
以äžã«äŸã瀺ãã
/** * åçŽãªæ¹è¡ã¯ * è©°ããã ãè©°ããŠè¡šç€ºãããã * æç€ºçã«æ¹è¡ãããå Žåã¯ã以äžã®ããã« * * 空ã®ã³ã¡ã³ãè¡ãæãã */ void dummy(void) { /* äœãããªã */ }
ã³ã¡ã³ããããã¯å
ã®åè¡ã*ã§å§ããŠããã®ã§ããã®æååã ãã®è¡(ã¹ããŒã¹ãã¿ãã¯ç¡èŠãããããã )ãããã°ããããæ®µèœã®åºåããšãªããæ¹è¡ãããŠåºåãããã以éããã®ãããªç©ºã®ã³ã¡ã³ãè¡ã®ããšããåã«ã空è¡ããšåŒã¶ã
doxygenã¯æçµçã«HTMLã«ç¿»èš³ããããããHTMLã§ããªãã¿ã®<br>ã¿ã°ã§ãæ¹è¡ã§ããããŸããdoxygenã³ãã³ãèªäœã«ãæ¹è¡ããæå³ãã\nã@nãšãã£ãã³ãã³ããããã®ã§ãããããå
¥åããŠãæ¹è¡ã§ããã
以äžã®äŸã§ã¯ããã®ä»ã«HTMLã¿ã°ã§ãã<b>ã¿ã°ã䜿çšããŠããã
/** * <b>ã¿ã€ãã«</b><br> * ã»æåã®èª¬æ<br> * ã»ãçªç®ã®èª¬æ\n * ã»äžçªç®ã®èª¬æ@n * ã»åçªç®ã®èª¬æ */ void dummy(void) { /* äœãããªã */ }
ãªããäžã®ãããªã±ãŒã¹ã§ã¯ã[4] ç®æ¡æžããšé£çªãªã¹ããã§èª¬æãããç®æ¡æžããã䜿ã£ãæ¹ãããã£ãšã¹ããŒãã«èšè¿°ã§ããã
/** * ã¿ã€ãã« * * - æåã®èª¬æ * - ãçªç®ã®èª¬æ * - äžçªç®ã®èª¬æ * - åçªç®ã®èª¬æ */ void dummy(void) { /* äœãããªã */ }
ãšããã§ãMacOS Xã§ããã¯ã¹ã©ãã·ã¥ãããå
¥åããæã«ã¯æ³šæãå¿
èŠã§ããã
Mac OS Xã§ã¯ãåè§ã®åèšå·ãï¿¥(0xa5)ããšåè§ã®ããã¯ã¹ã©ãã·ã¥ã(0x5c)ããæç¢ºã«åºå¥ãããŠãããããŒããŒãã®ãï¿¥ãããŒãæŒããæã«ã©ã¡ããå
¥åããããã¯ãã·ã¹ãã ç°å¢èšå®ãã«äŸåããã
詊ãã«ãï¿¥ãããŒãæŒããæã«ãï¿¥ãã衚瀺ãããããããã¯åèšå·ãï¿¥(0xa5)ãã§ããããã¯ã¹ã©ãã·ã¥ã(0x5c)ãã§ã¯ãªããã ãããï¿¥ïœããšå
¥åããŠãæ¹è¡ãããªãããã®å Žåã¯ãOptionããŒãæŒããªãããï¿¥ãããŒãæŒããšè¯ãã
ããã©ã«ãã§ããã¯ã¹ã©ãã·ã¥ãå
¥åããããšæã£ãããã·ã¹ãã ç°å¢èšå®ãã§ã®å€æŽãå¿
èŠã ã
æ¥æ¬èªçWindowsã§ã¯ããã®ç¹ãããŸãé ãããŠããããï¿¥ãããŒãæŒããæã¯ã(0x5c)ããå
¥åããããããã«ãæ¥æ¬èªãã©ã³ãã®å Žåã¯ããã¯ã¹ã©ãã·ã¥ã(0x5c)ãããï¿¥ããšè¡šç€ºãããã ãããï¿¥ïœããšè¡šç€ºãããŠããŠããã¡ãããšæ¹è¡ãããã®ã ã
ã¡ãªã¿ã«ãäžèšã®äŸã®ããã«ãã³ã¡ã³ãã®äžã«ããã<b>ã<br>ãªã©ã®HTMLã¿ã°ãå
¥ã£ãŠããã³ãŒããèŠãããšãããããããã¯äœã ããã
ã²ã©ããã®ã«ãªããšãåå·ççã«åè¡ãåè¡ã«<br>ãä»ããŠããããã食ãã®ããã®HTMLã¿ã°ãå
¥ã£ãŠãããããã
ãã®HTMLã¿ã°ã¯doxygenã®æŽåœ¢ããã°ã©ã ãéããªããšãŸãšãã«èŠãããªãããã§ãæ®éã«ãœãŒã¹ã³ãŒããªãŒãã£ã³ã°ããŠããåã«ã¯ç®éãã§èŠèŠããã°ãããªã®ã«ã
doxygenã³ã¡ã³ãã«åãã®ãè¯ãããæ®æ®µã¯æ®éã«èªããŠãdoxygenã«éãã°ããã綺éºã«èªããã³ã¡ã³ãã®æžãæ¹ãããã®ãæ¬çã ãšæãã®ã ãã
äœãéäžããå
šç¶doxygenã®èª¬æã«ãªã£ãŠãŸãããã
[4] ç®æ¡æžããšé£çªãªã¹ã
doxygenã³ã¡ã³ãå
ã«ã-ã-#ã§å§ãŸãè¡ãèšè¿°ãããšãç®æ¡æžããé£çªãªã¹ããšããŠåºåãããã
-ãšã¹ããŒã¹ã§ãç®æ¡æžãããšãªããã¿ããã¹ããŒã¹ã§æ®µä»ããããšãããäœãã¬ãã«ã®ç®æ¡æžãã瀺ãããšãã§ããã
ãŸãã.ã®ã¿ã®è¡ã¯ããã®ã¬ãã«ã®ç®æ¡æžããçµäºãããã
/** * ã¿ã€ãã« * * - ç®æ¡æžã1 * - ç®æ¡æžã2 * - ç®æ¡æžã2-1 * ãã®è¡ã¯äžã®è¡ã«è©°ããããããã * - ç®æ¡æžã2-1-1 * . * ç®æ¡æžã2-1ã®è¿œå 説æ * - ç®æ¡æžã2-2 * - ç®æ¡æžã3 */ void dummy(void) { /* äœãããªã */ }
äžã®äŸã®éãã飿¥ããè¡ã¯è©°ããã ãè©°ããŠåºåãããã®ã§ããããå«ãªå Žåã¯ãåãã¬ãã«ã«ããã(.)ã ãã眮ãããšã«ããããã®åã®ç®æ¡æžããçµããããããšãã§ãã(ç®æ¡æžã2-1-1ã®åŸã®.ã®ã¿ã®ã³ã¡ã³ãè¡ãããã )ã
å
é ã-#ã§å§ãããšé£çªãªã¹ãã«ãªãã
/** * ã¿ã€ãã« * * -# é£çªãªã¹ã1 * -# é£çªãªã¹ã2 * -# é£çªãªã¹ã2-1 * -# é£çªãªã¹ã2-2 * - ããã«ç®æ¡æžããå«ããããšãå¯èœã * ãã®ããã«å¥ã®è¡ã«æžããŠãè©°ããããããã * . * . * åãã¬ãã«ã«ããããããããšã§è©²åœã®ã¬ãã«ã匷å¶çã« * çµããããã * -# é£çªãªã¹ã3 * . * -# é£çªãªã¹ã(æ°ãã1) */ void dummy(void) { /* äœãããªã */ }
ãé£çªãªã¹ã3ãã®åŸã«.ã ãã®è¡ããããããã§æ¬¡ããã¯æ°ããé£çªãªã¹ããšãªãã
æ®éã«ãœãŒã¹ã³ãŒããªãŒãã£ã³ã°ããŠããå Žåã¯ã-ã¯ãŸã ããã-#ã¯åãªãå€ãªèšå·ã«ããèŠããªããdoxygen 1.8.0ããã¯ãMarkdownãšåãã1.ã2.ãšããé£çªãªã¹ããæ¯ããããã«ãªã£ãã
MarkdownãµããŒãã«é¢ããŠã¯æ¬¡ã®é
ã§èª¬æããã
doxygen 1.8.0 ããã¯Markdownèšæ³ããµããŒããããããã«ãªã£ãã
Markdownã®ãããªç®æ¡æžããé£çªãªã¹ããè¡šãæ°Žå¹³ç·ããã®ä»ã®èšè¿°ãã§ããããã«ãªã£ãã
以äžã«äŸã瀺ãã
/** * ### ã¿ã€ãã« * * ãã®é¢æ°ã®æ©èœ * _ _ _ * 1. ã¡ã€ã³æ©èœ * * 説æ1 * * 説æ2 * 2. ãµãæ©èœ * 1. ãµãæ©èœ1 * 2. ãµãæ©èœ2 * * | å·Šè©°ã | äžå€®æã | å³è©°ã | * |:------ |:--------:| ------:| * | 1-1 | 1-2 | 1-3 | * | 2-1 | 2-2 | 2-3 | */ void dummy(void) { /* äœãããªã */ }
ã###ãã¯Markdownã®ã¿ã€ãã«æå®(H3ã䜿çš)ãã_ _ _ãã¯æ°Žå¹³ç·ã ã
ãªãªãžãã«ã®Markdownèšæ³ã®ä»ã«ãããã€ãã®æåãªæ¡åŒµæ©èœããµããŒããããŠãããããªã®ã§ãåèãŸã§ã«ä»¥äžã«URLã貌ãä»ããŠããã
URL: http://www.stack.nl/~dimitri/doxygen/manual/markdown.html
ãªããæ®å¿µãªãããè¡æ«ã«ã¹ããŒã¹ãäºã€ä»¥äžå
¥ããŠã®æ¹è¡ãã§ã®ãåŒ·å¶æ¹è¡ãã¯ãµããŒããããŠããªãããã ã
ãã£ã±ãäºææ§ãšãã«åé¡ãããã®ã ãããã
doxygenã³ã¡ã³ãã®äžã«ã\ã@ã§å§ãŸãç¹æ®ã³ãã³ããæã¿èŸŒãããšã«ãããè²ã
ãªæ
å ±ãä»å ããŠåºåããããšãå¯èœãšãªãã
ãã以éã¯ããã®ãããªç¹æ®ã³ãã³ãã«ã€ããŠãç®çå¥ã«èª¬æããŠè¡ããã
ãªããããã§ã¯ç¹æ®ã³ãã³ãã@圢åŒã§èšè¿°ããããããã¯åçŽã«èªåã®å¥œã¿ã§ããã
äŸãã°ã@briefã¯\briefãšèšè¿°ããŠãè¯ãã®ã§ã奜ã¿ã®æ¹ãéžã¹ã°è¯ãã ããã
[6-1] ç·åæŠèŠ(ã¡ã€ã³ããŒãž)ãšè«žæ
å ±
doxygenã§äœã£ãããã¥ã¡ã³ãã§äžçªæåã«è¡šç€ºãããããŒãž(ãç·åæŠèŠããåã¯ãã¡ã€ã³ããŒãžã)ããããããã®ãŸãŸã ãšãããã«ã¯äœã衚瀺ããããã¡ãã£ãšæ Œå¥œæªãã
ãã®ããŒãžã«èŒãããææžã¯doxygenã³ãã³ãã®@mainpageã³ãã³ãã§äœãããšãã§ããã
ãŸãã@pageã³ãã³ãã䜿ãã°ãä»ã®ããŒãžãäœãããšãã§ããã
以äžã«ãããã®äŸã瀺ãã
/** * @mainpage ã¡ã€ã³ã¿ã€ãã« * ãããããªèª¬æ * * @section main_sec 倧é
ç® * 倧é
ç®ã®èª¬æ * * @subsection main_subsec äžé
ç® * äžé
ç®ã®èª¬æ * * @par å°é
ç® * 詳ãã㯠@ref more_info ãåç
§ã®ããšã */ /** * @page more_info è£è¶³èª¬æ * è²ã
ãªè£è¶³ã®èª¬æã * 倧æ¬ã® @ref main_sec ãåç
§ã®ããšã */ /** * @page more_info2 ãããªãè£è¶³èª¬æ * ããã«è²ã
ãªè£è¶³ã®èª¬æã */
ãããã®ã³ã¡ã³ãã¯ãåããã¡ã€ã«ã«èšè¿°ããŠãè¯ãããå¥ã
ã®ãã¡ã€ã«ã«èšè¿°ããŠãè¯ãã
@mainpageã«èšè¿°ããã³ã¡ã³ããæåã®ããŒãž(ãç·åæŠèŠããåã¯ãã¡ã€ã³ããŒãžã)ã«è¡šç€ºãããã
åºåäŸïŒæåã®ããŒãž(ç·åæŠèŠãåã¯ã¡ã€ã³ããŒãž)
äžèšäŸã®ãå°é
ç®ãäžã«ããè£è¶³èª¬æã¯ãªã³ã¯ã«ãªã£ãŠãããããã¯@refã³ãã³ãã®çµæã ã
@pageã«èšè¿°ããã³ã¡ã³ããã諞æ
å ±ãããŒãžã«è¡šç€ºãããã
åºåäŸïŒ@pageã§äœã£ãããŒãž(諞æ
å ±)
ãã®äŸã§ã®è£è¶³èª¬æãšããããªãè£è¶³èª¬æã¯å
šãŠãªã³ã¯ã«ãªã£ãŠããã ã¯ãªãã¯ãããšä»¥äžã®ãããªããŒãžã衚瀺ãããã
åºåäŸïŒãããªãè£è¶³èª¬æ
ãè£è¶³èª¬æãã®ããŒãžã®å€§é
ç®ã®éšåã@refã³ãã³ãã§äœã£ããªã³ã¯ã«ãªã£ãŠããã
@sectionã@subsectionã@pageåã³ãã³ãã®å·Šã®main_secãmain_subsecãmore_infoãmore_info2ã¯ãå
šãŠ@refã³ãã³ãã§ã®ãªã³ã¯å
ã«äœ¿ããã¯ãªãã¯ãããšããããã該åœã®ããŒãžã衚瀺ããã
ãªãã@refã³ãã³ãã§ãªã³ã¯ã匵ãå Žåã¯ãäžèšäŸã®ããã«ãååã®ååŸã«ã¹ããŒã¹ãå¿
èŠã§ãããã¹ããŒã¹ç¡ãã§ååŸã«è©°ããŠæžããŠããŸããšãªã³ã¯ãšããŠèªèãããªããªãã
[6-2] ãã¡ã€ã«ããããšå€æŽå±¥æŽ
ããã°ã©ã ãã¡ã€ã«ã®å
é ã«ã¯ããã®ãã¡ã€ã«èªäœã®èª¬æã倿Žå±¥æŽãªã©ãèšè¿°ãããšæãã
ãããã®æ
å ±ãèŠæ ãããåºåããŠãããdoxygenã³ãã³ããããã 以äžã«ãã®äŸã瀺ãã
/** * @file RingBuf.c * @brief ãªã³ã°ãããã¡ã©ã€ãã©ãª * * äžè¬çãªãªã³ã°ãããã¡å¶åŸ¡ã®ããã®APIããŸãšããã©ã€ãã©ãªã * * @author mits * @date 2015.01.20 * @version 1.0 * @copyright 2015 Mits Corp. All rights reserved. * * @par 倿Žå±¥æŽ: * - 2015.01.15: mits: æ°èŠäœæ * - 2015.01.20: mits: 以äžã®éã * 1. 空ããããã¡ãµã€ãºã®èšç®æ¹æ³ãããããã£ãã®ã§çŽãã * 2. 颿°åã®ãªãã¡ã¯ã¿ãªã³ã°ãè¡ã£ãã * - Command* â Cm_* * - Driver* â D_* */
ãŸããããã¡ã€ã«ãããŒãžã«ãã¡ã€ã«ã®äžèЧã衚瀺ãããã
ãã¡ã€ã«åã®èã«è¡šç€ºãããŠããã¡ãã»ãŒãžã¯@briefã³ãã³ãã§èšè¿°ãããã®ã§ããã
ãã®ãã¡ã€ã«å(äŸã§ã¯RingBuf.c)ã¯ãªã³ã¯ã«ãªã£ãŠããã
ãã¡ã€ã«åãã¯ãªãã¯ãããšãdoxygenã³ã¡ã³ãã§æžããæ
å ±ã衚瀺ãããã
é
ç® ã³ãã³ã 説æ ãã¡ã€ã«å @file ãã¡ã€ã«åã瀺ããå¿
é é
ç®ã§ããããããç¡ããšïŒ£ããã°ã©ã ã§ã¯ããŸãšãã«ããŒãžãäœã£ãŠãããªãã
ãŸããããã§èšè¿°ãããã¡ã€ã«åã¯ãå®éã®ãã¡ã€ã«åãšäžèŽããŠãªããã°ãªããªãã æŠèŠ @brief æ¬ãã¡ã€ã«ã®æŠèŠèª¬æããã¡ã€ã«äžèЧããŒãžã§ã¯ããã®æŠèŠèª¬æã䜿ãããã
ãªããäžèšäŸã®ããã«ã@briefã®ããšã«ç©ºè¡ãäžè¡æãã åŸã詳ãã説æãæžãã®ãäžè¬çã ã äœè
ãæ¥ä»ããããŒãžã§ã³ãèäœæš© @author, @date, @version, @copyright ãã€ãã®èšè¿°ãã奜ã¿ã§ã©ããã æ®µèœ @par @parã³ãã³ãã¯ãå¥ã«å€æŽå±¥æŽçšã®ã³ãã³ãã§ã¯ãªããããã®ããã«ãŸãšãŸã£ãæç« ãæžãããã«éå®ããã®ã§äœ¿ã£ãŠããã
ãã®äŸã§ç€ºããããã«ãè€æ°ã®æ
å ±ãåæããã«ã¯ãç®æ¡æžããããé£çªãªã¹ãããéåžžã«éå®ãããããããèŠèŠãã<br>ãä¹±çºããªããŠãæžãã
颿°å®çŸ©ã®åã«ããã®é¢æ°ã®åŠçå
容ãåŒæ°ãæ»ãå€ãªã©ã®èª¬æãæžãããããããããããèŠæ ãããåºåããŠãããdoxygenã³ãã³ãã«ã€ããŠèª¬æããã
以äžã«äŸã瀺ãã
/** * @brief æŠèŠèª¬æ * * ãã®ç°¡åãªèª¬æã * * @param[out] op åºåãã©ã¡ãŒã¿ * @param[in] ip å
¥åãã©ã¡ãŒã¿ * @param[in,out] iop å
¥åºåãã©ã¡ãŒã¿ * @retval true åŠçæåã * @retval false åŠç倱æã */ bool dummy(char *op, int ip, int *iop) { /* ç¥ */ }
颿°ã®æ»ãå€ã瀺ãdoxygenã³ãã³ããšããŠã¯ãä»ã«@returnãããã
/** ã ç¥ ã * @return 0ïœMAX_BUFã®ç¯å²å€ãè¿ãã ã ç¥ ã */
é
ç® ã³ãã³ã èª¬æ æŠèŠ @brief ãã¡ã€ã«ãããã§ã䜿ã£ã@briefã³ãã³ãã ã颿°äžèЧã«ã¯ãããã§èšè¿°ããæç« ãåºåãããã
ãã¡ã€ã«ãããåæ§ã«ã空è¡ãäžè¡æãã åŸã説æãæžãã®ãäžè¬çã ã åŒæ° @param 颿°ã®åŒæ°ã¯ããã®ã³ãã³ãã§æå®ããã
ãã®äŸã®ããã«ãååŒæ°ã«ã¯åºåã»å
¥åã»å
¥åºåã®æ
å ±ãä»å ããããšãå¯èœã§ãã(ä»ããªããŠãè¯ã)ã æ»ãå€ @retval, @return æ»ãå€ã瀺ãããã®ã³ãã³ããšããŠã¯äºçš®é¡ããã
åæåãããŒã«å€ãªã©ãããã€ãã®é
ç®ã«åé¡ããŠèª¬æãããæã¯@retvalãã²ãšãŸãšãŸãã®æç« ã§èª¬æãããå Žåã¯@returnã䜿ãã
説æãããããšãããããããå Žåã¯ãå
ã«ç€ºãã@parãªã©ã䜿ãã®ãè¯ãã ããã
ã奜ã¿ã§ãå
ã«ç€ºãã@authorã@dateãªã©ã䜿ã£ãŠãè¯ããããŸãééããªãã¡ã³ããã³ã¹ãããªããªããšæããâŠ
[6-4] 颿°ã®äºåæ¡ä»¶ãšäºåŸæ¡ä»¶
颿°ã®äžã§assert()ã䜿ã£ãå Žåããã®è¡šæå
容ã説æããã®ã«é©ããdoxygenã³ãã³ããããã
@preã@postãããã§ã以äžã«äŸã瀺ãã
/** * @brief ç°¡æã¡ã¢ãå²ãåœãŠ * @param sz å²ãåœãŠãµã€ãº * @return å²ãåœãŠãã¡ã¢ãª * @pre szã¯1ãMAXBUFã®ç¯å²å
ã«ããããšã * @post ã¡ã¢ãªå²ãåœãŠã¯åžžã«æåããã */ void *alloc(int sz) { void *p; assert(0 < sz && sz <= MAXBUF); /* ã */ assert(p != NULL); return p; }
ã¡ãªã¿ã«ããããã®ã³ãã³ãã¯ã³ãŒãã®äžã«çŽæ¥æžããŠãæ§ããªããåºåçµæã¯ãå
ã®äŸãšåãã§ã颿°èª¬æãšããŠãã¹ãŠãŸãšããŠè¡šç€ºããŠãããã
void *alloc(int sz) { void *p; /** @pre szã¯1ãMAXBUFã®ç¯å²å
ã«ããããšã**/ assert(0 < sz && sz <= MAXBUF); /* ã */ /** @post ã¡ã¢ãªå²ãåœãŠã¯åžžã«æåããã**/ assert(p != NULL); return p; }
[6-5] 颿°ãªã©ã®èªåãªã³ã¯
doxygenã³ã¡ã³ãå
ã§ã颿°åãªã©ã«ãªã³ã¯ãä»ããããšãã§ããã
以äžã®ããã«ã颿°åã«ç¶ããŠ()ãèšè¿°ããååŸã®æç« ãšã¹ããŒã¹ã§éã空ããŠããã
/** * @mainpage * ãªã³ã°ãããã¡ã©ã€ãã©ãª * * @section main_api APIäžèЧ * | APIå | æ©èœ | * |:-------------- |:-------------------------------- | * | Rbuf_ini() | ãªã³ã°ãããã¡ã®åæå | * | Rbuf_putChr() | ãªã³ã°ãããã¡ãž1æååºå | * | Rbuf_getChr() | ãªã³ã°ãããã¡ããã®1æåå
¥å | * | Rbuf_isEmpty() | ãªã³ã°ãããã¡ã空ãã©ããã®å€æ | * * @section main_usage äœ¿çšæ¹æ³ * - ããããã Rbuf_ctl åã®å€æ°ãå®çŸ©ããŠããã * - ãã®å€æ°ã§ Rbuf_ini() ãåŒã³åºãã */
颿°ãããã§@briefã§èšè¿°ããã³ã¡ã³ãããã€ã³ãããæã«è¡šç€ºããããã¯ãªãã¯ãããšè©²åœã®é¢æ°å®çŸ©ã®ããŒãžã衚瀺ãããã
ãŸãããã®äŸã®ãäœ¿çšæ¹æ³ãæ¬ã®Rbuf_ctlã¯æ§é äœã¿ã°åã§ãããããã®ååŸã«ãã¹ããŒã¹ã§éã空ããŠããã®ã§ãèªåãªã³ã¯ãä»ããŠããã
ãã®ããã«ã颿°å以å€ã«ãããã€ãèªåãªã³ã¯ããããã®ããããåèãŸã§ã«ã以äžã«èªåãªã³ã¯ã®èª¬æããŒãžã貌ã£ãŠããã
Automatic link generation
URL: http://www.stack.nl/~dimitri/doxygen/manual/autolink.html
åœç¶ã®ããšãªããããªã³ã¯å
ã®é¢æ°ã«doxygenã³ã¡ã³ããä»ããŠãªããšèªåãªã³ã¯ãããªãã
ãªãã颿°åç
§ãšããŠã¯ãåç
§ãã»ã¯ã·ã§ã³å
ã«æžãæµåãããã ããããã®ãããªå Žåã¯@saã³ãã³ãã䜿çšã§ããã
/** * @brief äžäººããäœãã§ããªã颿° * @sa mama() ãš papa() */ void baby(void) { /* ... */ }
[6-6] 泚æãèŠåããã°ãtodo
äœããã®æ³šæãåèµ·ããããã«ãdoxygenã³ã¡ã³ãã®äžã«ä»¥äžã®å
çš®é¡ã®èšè¿°ãå¯èœã§ããã
ç¶æ³ã«å¿ããŠäœ¿ãåããã°è¯ãã ããã
/** * @brief å¶åŸ¡æ§é äœ * * éåžžã«éèŠãªæ§é äœ * * @remarks åãªãæ
å ±ãæžããããšãã * @attention 泚æãåèµ·ããããšãã * @warning äœããã®èŠåãããŠãããããšãã * @bug ãã°ãååšãããšãã * (å¥ããŒãžã§äžèЧããªã¹ãåãããã) * * @note äœããã®ã¡ã¢æžãã * @todo ããã¹ãããšãæžããŠããã * (ãããå¥ããŒãžã§äžèЧããªã¹ãåãããã) */ typedef struct Control { int member1; ///< æåã®ã¡ã³ã int member2; ///< 次ã®ã¡ã³ã int member3; ///< äžçªç®ã®ã¡ã³ã } Control;
@bugãš@todoã«é¢ããŠã¯ã@pageã³ãã³ãã§ã䜿ãããã諞æ
å ±ãããŒãžå
ã«äžèЧããªã¹ãåããã(äžã®äŸã§ãããã°ããšãtodoãã«ã¯ã該åœããŒãžãžã®ãªã³ã¯ãä»ããŠãã)ã
ã諞æ
å ±ãããŒãžã®todoäžèЧããã°äžèЧã¯ããããããªã³ã¯ã«ãªã£ãŠãããã¯ãªãã¯ãããšãããã該åœã®ããŒãžã衚瀺ãããã
åãªã³ã¯ãã¯ãªãã¯ããæã«è¡šç€ºãããç»é¢ã
ãããããdoxygenã³ã¡ã³ãã§æžãããã®ãåºåãããã
[7] ã€ã³ã¹ããŒã«æã«èšå®ãããã®
doxygenèšå®ãã¡ã€ã«ã®Doxyfileå
ã®èšå®ã§ãå¿
é ãªãã®ã調æŽãå¿
èŠã ã£ããã®ãªã©ãæããŠããã
ãããžã§ã¯ãã®åç§°ãåºåããã¥ã¡ã³ãã®ããŒãžã®ã¿ã€ãã«ãšããŠäœ¿ããããããã©ã«ãã¯My Projectãªã®ã§ã奜ã¿ã®åç§°ã«å€ããŠãããæ¹ãè¯ãã ããã
ãã¡ã€ã«ã®åºåå
ãé©åœãªå Žæãèšå®ããŠããã
æ¥æ¬èªã®ããã¥ã¡ã³ãã§åºåããŠæ¬²ããã®ã§JapaneaseãšããŠããã
ãœãŒã¹ã³ãŒãã®ã¿ãå¹
ãäœæåãšããŠããããdoxygenã«æããã
ããã©ã«ãã¯4ã§ã1ïœ16ã®ç¯å²ã§æå®ã§ãããèªåã¯ããã°ã©ã ã4ã¿ãã§äœ¿çšããŠããã®ã§ããã©ã«ãã®ãŸãŸã ã
ããã©ã«ãã¯ç¡å¹(NO)ã ããæå¹(YES)ã«ãããšCããã°ã©ã ã«é©ããæé©åãããŠãããã
ååçã«èªåã¯Cã§ãã䜿ããªãã®ã§æå¹(YES)ã«ããŠããã
doxygen ver.1.8.0ããã¯ã³ã¡ã³ãå
ã§ã®Markdownèšæ³ããµããŒããããŠããã
ãã®èšå®ã§ãdoxygenã§Markdownèšæ³ã䜿ããã©ãããéžæã§ããã
ããã©ã«ãã§æå¹(YES)ãªã®ã§ãMarkdownèšæ³ããã£ãšãããå Žåã¯ç¡å¹(NO)ã«ããã°è¯ãã
staticå®çŸ©ããã颿°ã倿°ãããã¥ã¡ã³ãã«åºåãããã©ãããæå®ããã
ããã©ã«ãã®ãŸãŸã ãšåºåãããªã(NO)ãããèªåã¯YESã«ããŠããã
ïŒïŒã®å Žåprivateã¡ã³ããããã¥ã¡ã³ãã«åºåãããã©ãããæ¬èšå®ã§éžæããã
ããã©ã«ãã®ãŸãŸã ãšåºåãããªã(NO)ããããããå«ãªãã°YESã«ããã°è¯ãã
ããã°ã©ãã«ãšã£ãŠã¯ã©ãã§ãè¯ãããšã ãã
@todoã³ãã³ãã®ãªã¹ããå¥ããŒãžã«äœããã©ãããæå®ãããããã©ã«ãã§æå¹(YES)ã§ããã
ç¹ã«å¿
èŠãªãå Žåã¯ç¡å¹(NO)ã«ããã
@bugã³ãã³ãã®ãªã¹ããå¥ããŒãžã«äœããã©ãããæå®ãããããã©ã«ãã§æå¹(YES)ã§ããã
ç¹ã«å¿
èŠãªãå Žåã¯ç¡å¹(NO)ã«ããã
å
¥åããã°ã©ã ã®æåãšã³ã³ãŒãã£ã³ã°ã
ããã©ã«ããUTF-8ã§ãããå€ããå¿
èŠã¯ãªããšæãããæãããå€ãããã°ã©ã (SHIFT_JISãEUC-JPãã¡ã€ã«)ãªã©ããã®ãŸãŸèªã¿èŸŒãŸããå Žåã«ã¯å€ããå¿
èŠãããã
å
¥åããã°ã©ã ããµããã£ã¬ã¯ããªãããåã蟌ãå Žåã¯æå¹(YES)ãšããã
ããã©ã«ãã¯ç¡å¹(NO)ãªã®ã§ãããã°ã©ã ã³ãŒãããµããã£ã¬ã¯ããªã«åããŠããå Žåã¯æå¹(YES)ã«ããå¿
èŠããã
ãã®èšå®ã§ç·åæŠèŠ(ã¡ã€ã³ããŒãž)ãäœãããã«ä»»æã®Markdownãã¡ã€ã«ãæå®ã§ããããã ã
GitHubã§çšæããReadMe.mdãããã®ãŸãŸäœ¿ãããšãã§ããã
颿°åã®èªåãªã³ã¯ããã£ãŠãããããã ãã埮åŠã«Markdownã®è§£éãç°ãªãããã§ã䜿ããªãã°åºåçµæã確èªããŠããã®æ¹ãè¯ãã
æå¹(YES)ã«ãããšããµã€ãããã«ã«ããªãŒç¶ã®ç®æ¬¡ãä»ããŠããããè¯ãã£ãããã©ããã
å³åœ¢æç»ã§Graphvizã®dotã³ãã³ãã䜿ãå Žåã¯æå¹(YES)ãšããã
å³åœ¢æç»çšã®Graphvizã®dotã³ãã³ãã®ãããã¹ãèšå®ããã
ãã©ã³ã¯ã«ããŠããã°åæã«ã³ãã³ããã¹ããæ¢ããŠããããšããããšã ã£ãã®ã«ãMac OS Xã§ã¯èŠã€ããŠãããªãã£ãããªãïŒ
ãããããªãã®ã§ãdotã®ã€ã³ã¹ããŒã«ãããŠãã/usr/local/binãèšå®ããŠããå¿
èŠããã£ãã