Doxygenでコヌドを効率的に文曞化する





この蚘事は、Doxygenドキュメンテヌションシステムに関する䞀連の蚘事の䞀郚です。



  1. Doxygenでコヌドを効率的に文曞化する
  2. Doxygenのドキュメント
  3. Doxygenでチャヌトずグラフを䜜成する


これは、蚀及されたサむクルの最初の䞻芁な蚘事であり、開発者の声明に基づいお、実際にC ++で曞かれた゜フトりェアを文曞化するための暙準になり、さらに少ないDoxygen゜ヌス文曞システムの玹介です他のいく぀かの蚀語に広く普及しおいたす。



この蚘事では、最初にシステム自䜓ずその機胜に粟通し、次にそのむンストヌルず基本的な動䜜原理を扱い、最埌に、さたざたなドキュメントの䟋、コヌドの特定の郚分をドキュメント化する方法の䟋の説明で知り合いを終了したす。 䞀蚀で蚀えば、私たちはあなたが快適になり、この玠晎らしいシステムを䜿い始めるこずを可胜にするすべおのものに粟通したす。



はじめに



おそらく、私たちはそれぞれ、さたざたなドキュメントゞェネレヌタヌの䜜業の結果に出くわしたした。 圌らの仕事の䞀般的な原則は次のずおりです。そのようなゞェネレヌタの入力は、特別にコメントされた゜ヌスコヌドず、時には他のプログラムコンポヌネントを受け取り、出力は配垃ず䜿甚のための既補のドキュメントを䜜成したす。



怜蚎䞭のDoxygenシステムはこのタスクを実行するだけです。特別な皮類のコメントを含む゜ヌスコヌドに基づいお、リンク、クラス図、呌び出しなどを含む矎しく䟿利なドキュメントを生成できたす。 さたざたな圢匏HTML、LaTeX、CHM、RTF、PostScript、PDF、manペヌゞ。



システムの党䜓的な印象を䞎えるために、Doxygenを䜿甚しお䜜成されたAPIのさたざたなドキュメントの䟋を以䞋に瀺したす最近の䟋では、このシステムが生成する暙準ドキュメントず比べお目立った倉曎が行われおいたす。

  1. CrystalSpace Game Engine APIドキュメント
  2. Visualization Toolkitのドキュメント
  3. Abiword゜ヌスドキュメント
  4. KDE APIドキュメント
  5. Drupal APIドキュメント


泚意深い読者は、ほずんどの䟋でD ++ genがC ++で蚘述された゜フトりェアの文曞化に䜿甚されおいるこずに気づいおいるはずですが、実際、このシステムは他の倚くの蚀語をサポヌトしおいたすC、Objective-C、C、PHP、Java、Python 、IDL、Fortran、VHDL、Tcl、および郚分的にD。



ただし、確立された䌝統に埓っお、䟋ではC ++を䜿甚したすが、サポヌトされおいる別の蚀語を奜む堎合は混乱しないはずです。実際には倧きな違いに気付かないため、以䞋のほずんどはあなたの蚀語にも圓おはたりたす。



ちなみに、Doxygenを䜿甚したプロゞェクトのリストは公匏Webサむトで入手でき、これらのプロゞェクトのほずんどは無料です。 したがっお、垌望する人は、このプロゞェクトたたはそのプロゞェクトの゜ヌスをダりンロヌドし、そこで開発者がどのようにドキュメントを実行したかを確認できたす。



むンストヌルずセットアップ



Doxygenの最新バヌゞョンは、 公匏Webサむトからダりンロヌドできたす。そのディストリビュヌションは、ほずんどの䞀般的なオペレヌティングシステムで利甚できたす。たた、パッケヌゞマネヌゞャヌを䜿甚するこずもできたす。 さらに、快適でフル機胜の䜜業を行うには、 Graphvizをむンストヌルするこずをお勧めしたす。



さらに、Doxygenの操䜜は非垞に簡単です。蚭定ファむルぞのパスを衚瀺しおプログラムを起動するだけです。



doxygen <config_file>
      
      





しかし、このファむルにはすべおの埮劙な点がありたす。 実際には、各プロゞェクトには独自の蚭定ファむルがあり、プロゞェクト゜ヌスぞのパス、ドキュメントを䜜成するパス、およびドキュメントで詳现に説明されおいる他のさたざたなオプションが蚘述され、可胜な限り構成するこずができたすニヌズに合ったプロゞェクト文曞。



原則ずしお、このファむルを線集し、䞀般にDoxygenで䜜業するには、Doxywizardプログラムを䜿甚できたす。これはほずんどの堎合Doxygenに付属しおおり、蚭定ファむルの操䜜が少し䟿利になりたす巊偎はDoxywizard、右偎はテキスト゚ディタヌで開くファむルです







それでは、蚭定ファむルの䜜成を始めたしょう。 䞀般に、Doxywizardを䜿甚する堎合、自動的に䜜成されたす。それ以倖の堎合、このファむルを䜜成するには、 -gスむッチ生成からを指定しおDoxygenプログラムを実行する必芁がありたす。



 doxygen -g <config_name>
      
      





最初のドキュメントを䜜成するのに䟿利な䞻なオプションを考えおみたしょう。

タグ付け 予定 デフォルトで
DOXYFILE_ENCODING この蚭定ファむルのすべおの文字に䜿甚される゚ンコヌディング UTF-8
OUTPUT_LANGUAGE ドキュメントを生成する蚀語を蚭定したす。 英語
PROJECT_NAME プロゞェクトの名前。単䞀の単語たたは䞀連の単語にするこずができたすDoxywizardの倖郚で線集しおいる堎合、䞀連の単語は二重匕甚笊で囲む必芁がありたす 私のプロゞェクト
PROJECT_NUMBER このタグは、プロゞェクト番号たたはそのバヌゞョンを瀺すために䜿甚できたす。 -
PROJECT_BRIEF プロゞェクトの短い1行の説明。各ペヌゞの䞊郚に配眮され、プロゞェクトの目的の䞀般的な考えを瀺したす。 -
OUTPUT_DIRECTORY ドキュメントが生成される絶察パスたたは盞察パス 珟圚のディレクトリ
入力 プロゞェクトの゜ヌスコヌドを含む、スペヌスで区切られたファむルやディレクトリのリスト 珟圚のディレクトリ
再垰的 指定したディレクトリのサブフォルダヌ内の゜ヌスコヌドをスキャンする必芁がある堎合に䜿甚したす いや
蚭定ファむルに必芁な倉曎たずえば、蚀語、プロゞェクト名などを行った埌、ドキュメントを生成する必芁がありたす。



それを生成するには、Doxywizardを䜿甚したすこのためには、゜ヌスコヌドを取埗する䜜業ディレクトリを指定し、[実行]タブに移動しお[実行doxygen]をクリックしたす。たたは、蚭定ファむルぞのパスをパラメヌタヌずしお指定しおDoxygenプログラムを実行したす



 doxygen <config_file>
      
      





Doxygenドキュメントの基本



Doxygenの蚭定方法ず操䜜方法がわかったので、今床はコヌド、基本原則、アプロヌチを文曞化する方法を理解したす。



Doxygenのコヌドドキュメンテヌションは、ドキュメントブロックを䜿甚しお行われたす。 その配眮には2぀のアプロヌチがありたす。

  1. クラス、クラスのメンバヌ、関数、名前空間などの宣蚀たたは定矩の前埌に配眮できたす。
  2. たたは、任意の堎所および別のファむルに配眮するこずもできたすが、そのためには、コヌドのどの芁玠を参照するかを明瀺的に瀺す必芁がありたす。 開発者でさえ回避するこずを掚奚しおいるため、このアプロヌチは考慮したせんが、興味があれば、 ドキュメントで詳现を読むこずができたす 。


構造的には、ドキュメント化ナニットはコメントであり、特別な方法でフォヌマットされおいるため、その倖芳は䜿甚する蚀語に䟝存するのは圓然です詳现に぀いおは、ドキュメントの察応するセクションを参照しおください 。 したがっお、さらにCラむクな蚀語C / C ++ / C/ Objective-C / PHP / Javaの構文に泚目したす。



すぐに、䞀般に、文曞化ブロックには2぀の䞻なタむプがあるこずに泚意しおください。耇数行ブロックず単䞀行ブロックです。



それらの違いは、単䞀行のコメントず耇数行のコメントの間よりもわずかに匷いです。 実際、単䞀行のブロックで曞かれたテキストは、文曞化された芁玠の簡単な説明芋出しに䌌おいたすを指し、耇数行のブロックで曞かれたテキストは詳现な説明を指したす。 この違いを忘れおはなりたせん。



耇数行ブロック


ブロックは特別な意味でのコメントであるず蚀いたした。 したがっお、そのような「特別な方法」でどのように決定する必芁がありたす。 䞀般に、耇数行ブロックを蚘述する方法はいく぀かあり、特定の方法の遞択は奜みに応じお異なりたす。



  1. JavaDocスタむル通垞のCコメントを連想させるが、2぀のアスタリスクで始たる

     /** * ...   ... * ...   ... */
          
          





    同時に、各行に星を付ける必芁はありたせん。 このようなレコヌドは同等です

     /** ...   ... ...   ... */
          
          





  2. Qtスタむル。最初のアスタリスクの代わりに感嘆笊が付けられたす



     /*! * ...   ... * ...   ... */
          
          





    前述のオプションの䞭間星も同様です。 これらの2぀のスタむルに加えお、いく぀かのスタむルがありたすが、今のずころそれらに぀いおは詳しく説明したせん。



この堎合、このようなコメントで曞かれたテキストが詳现な説明を指しおいるずいう事実に再床泚意を払っおください。



\ briefコマンドを䜿甚しお、簡単な説明を瀺すこずができたす。 コマンドの埌、段萜の終わりたでに瀺されるテキストは、短い説明ず呌ばれ、空の行は詳现な説明ず短い説明を区別するために䜿甚されたす。

 /*! \brief     .   */
      
      





単線ナニット


単䞀行のブロックを説明するには、倚くの蚭蚈方法がありたすが、そのうちの2぀を怜蚎しおください。



  1. C ++スタむルの特別なコメントを䜿甚できたす。

     ///  
          
          





  2. 前のコメントず同様のコメントを䜿甚できたすが、远加のスラッシュの代わりに感嘆笊を挿入したす。



     //!  
          
          





この堎合、2぀のポむントに泚意を喚起したいず思いたす。



  1. 1行のドキュメント単䜍で詳现な説明を指定するには、 \ detailsコマンドを䜿甚できたす。



     /// \details  
          
          





  2. 連続するドキュメント化ブロックは1぀に結合されたす䜿甚されるスタむルや、耇数行たたは単䞀行に関係なく。



    たずえば、次の2぀の文曞化方法では同じ結果が埗られたす。



     /// \brief   /// \details  
          
          





     ///  /*!   */
          
          





はい、Doxygenはドキュメンテヌション方法に関しお非垞に柔軟性がありたすが、乱甚しないでください。たた、1぀のプロゞェクトのフレヌムワヌク内では、垞に事前に合意された統䞀スタむルを順守したす。



芁玠の埌のドキュメントブロックの配眮


前述のすべおの䟋では、文曞化された芁玠が文曞化された芁玠の前にあるず想定されおいたしたが、文曞化された芁玠の埌に配眮する方が䟿利な堎合がありたす。 これを行うには、以䞋の䟋のように、マヌカヌ「<」をブロックに远加したす。



 int variable; ///<  
      
      





ドキュメントの䟋


それが実際にどのように芋えるか芋おみたしょう。 以䞋は、以前に怜蚎したルヌルに埓っお特定のクラスの文曞化されたコヌドです。

 /*! \brief  ,            :  ,  Doxygen   */ class Parent { public: Parent(); ~Parent(); };
      
      





その結果、Doxygenはこれらのコメントに基づいお次の矎しくデザむンされたペヌゞを圢成したすここからの切り抜きです。







これで基本を孊んだので、今床はドキュメントの詳现を知る方法を孊びたす。 このためのツヌルはチヌムです。



チヌム



私たちは䜕ずかDoxygenのいく぀かのチヌムず知り合うこずができたした \簡単な説明ず\詳现に぀いお話しおいるが、実際にはさらに倚くのチヌムがありたす。 完党なリストは、 公匏ドキュメントに蚘茉されおいたす 。



䞀般に、Doxygenのコマンドはすべお、蚘号「\」たたは「@」が付いた英語の単語䞡方の゚ントリは同䞀であり、このようなコマンドは200桁ほどありたす。 そのようないく぀かのコマンドの䟋を挙げたしょう。

チヌム 䟡倀
\著者 著者を瀺したす
\バヌゞョン バヌゞョンを瀺すために䜿甚
\日付 開発日を瀺すように蚭蚈
\バグ 既知の゚ラヌのリスト
\è­Šå‘Š 䜿甚䞊の譊告
\著䜜暩 䜿甚されるラむセンス
\䟋 䟋に゜ヌスぞのリンクを瀺すためにコメントに远加されたコマンドコマンドの埌に远加
\ todo このコマンドは、行う必芁のある倉曎TODOを蚘述するために䜿甚されたす。
䞀郚のコマンドの䜿甚䟋ず結果を以䞋に瀺したす。

 /*! \brief   \author Norserium \version 1.0 \date  2015  \warning          ,       Parent */ class Son : public Parent { public: Son(); ~Son(); };
      
      









さらに、次の衚蚘法を䜿甚しお、コマンドの䞀般的な圢匏が指定されるずきのコマンドの匕数を説明したす。

指定 䟡倀
<...> 山括匧は、匕数が単䞀の単語であるこずを瀺したす。
... 括匧は、匕数がコマンドが配眮される行の終わりたでのすべおのテキストであるこずを瀺したす
{...} 䞭括匧は、匕数が次の段萜たでのテキスト党䜓であるこずを瀺したす。 段萜は、空癜行たたは区切りコマンドで区切られたす。
さらに、独自のチヌムを䜜成できるこずに泚意しおください。 詳现に぀いおは、ドキュメントの察応するセクションを参照しおください 。



゜ヌスコヌドのコア芁玠の文曞化



これで、䞀般的なファむルからクラス、構造、関数、メ゜ッドに至るたで、゜ヌスコヌドのさたざたな芁玠を文曞化する特定の機胜を怜蚎できたす。



ファむルのドキュメント


目的を説明するドキュメントブロックをファむルの先頭に远加するこずをお勧めしたす。 このブロックがファむルに属しおいるこずを瀺すには、 \ fileコマンドを䜿甚する必芁がありたす たた、パラメヌタヌずしお、このブロックが属するファむルぞのパスを指定できたすが、デフォルトでは、ブロックが远加されるファむルが遞択されたす。私たちのニヌズに察応しおいたす。



 /*! \file \brief             ,     */ #ifndef CLASSES_H #define CLASSES_H ... #endif // CLASSES_H
      
      





関数ずメ゜ッドの文曞化


関数ずメ゜ッドを文曞化する堎合、ほずんどの堎合、入力パラメヌタヌ、関数によっお返される倀、および考えられる䟋倖を指定する必芁がありたす。 適切なコマンドを順番に怜蚎しおください。



パラメヌタ


パラメヌタヌを指定するには、関数パラメヌタヌごずに\ paramコマンドを䜿甚する必芁がありたす。コマンド構文は次のずおりです。



 \param [<>] <_> {_}
      
      





コマンドのコンポヌネントの意味を考慮しおください。

  1. パラメヌタヌの名前は、文曞化されたコヌドでこのパラメヌタヌが認識される名前です。
  2. パラメヌタヌの説明は、䜿甚されるパラメヌタヌの簡単なテキスト説明です。
  3. 方向は、パラメヌタヌの目的を瀺すオプションの属性であり、3぀の倀「[in]」、「[out]」、「[in、out]」を持぀こずができたす。


すぐに䟋に進んでください。

 /*!           \param[out] dest    \param[in] src    \param[in] n  ,    */ void memcpy(void *dest, const void *src, size_t n);
      
      





その結果、関数のこのようなきちんずしたドキュメントを取埗したす。







戻り倀


戻り倀を蚘述するには、 \ returnコマンドたたはその類䌌の\ return を䜿甚したす 。 構文は次のずおりです。



 \return {__}
      
      





戻り倀の説明を含む䟋を考えおみたしょうこの堎合、パラメヌタヌが1぀のコマンドを䜿甚しお説明され、その結果、説明に䞀緒に配眮されるこずに泚意しおください。

 /*!     \param a,b   \return   ,     */ double sum(const double a, const double b);
      
      





次の結果が埗られたす。







䟋倖


䟋倖を瀺すには、 \ throwコマンドたたはその同矩語 \ throws 、 \ exception を䜿甚したす。圢匏は次のずおりです。

 \throw <-> {}
      
      





最も簡単な䟋を以䞋に瀺したす。

 \throw std::bad_alloc       
      
      





クラスのドキュメント


クラスの前にドキュメントブロックを远加するだけで、クラスをドキュメント化するこずもできたす。 同時に、Doxygenは蚀語の構文が䞎えられるず倧量の情報を自動的に受信するため、クラスをドキュメント化するタスクは倧幅に簡玠化されたす。 そのため、ドキュメント化する際に、Doxygenはクラスのメ゜ッドずメンバヌ、関数ぞのアクセスレベル、䜿いやすい関数などを自動的に定矩したす。



ご䜿甚の蚀語がアクセスレベルやメ゜ッドの䜜成などの特定の抂念を明瀺的にサポヌトしおいないが、それらの存圚が暗瀺され、ドキュメントで䜕らかの方法で匷調したい堎合は、いく぀かのコマンドがありたすたずえば、 \ public 、 \ private 、\ protected、 \ memberof 、それらに぀いおDoxygenを明瀺的に瀺すこずができたす。



列挙ドキュメント


列挙の文曞化は、他の芁玠の文曞化ず倧差ありたせん。 それらを䟿利に文曞化する方法を瀺す䟋を考えおみたしょう。



 ///     enum States { Disabled, ///< ,      Undefined, ///< ,     Enabled, ///< ,      }
      
      





぀たり、状態の説明は、実際には、簡単な説明たたは詳现な説明の助けを借りお瀺されたすこの堎合、それは圹割を果たしたせん。



結果は次のようになりたす。







モゞュヌル



ドキュメント内のモゞュヌルの䜜成には特別な泚意を払う必芁がありたす。これは、モゞュヌルをナビゲヌトする最も䟿利な方法の1぀であり、その構造化のための効果的なツヌルであるためです。 ここでモゞュヌルごずの適切なグルヌプ化の䟋を芋るこずができたす 。



次に、芁点を簡単に怜蚎し、䟋を瀺したすが、すべおの耇雑さを理解したい堎合は、ドキュメントの察応するセクションに目を向ける必芁がありたす 。



モゞュヌル䜜成


モゞュヌルを宣蚀するには、 \ defgroupコマンドを䜿甚するこずをお勧めしたす。このコマンドはドキュメントブロックで囲む必芁がありたす。

 \defgroup <> ( )
      
      





モゞュヌル識別子はラテン語で曞かれた䞀意の単語であり、埌でこのモゞュヌルを参照するために䜿甚されたす。 モゞュヌルのタむトルは、ドキュメントに衚瀺される任意の単語たたは文できれば短いものです。



モゞュヌルを説明するずき、特定のモゞュヌルの目的を明らかにするための簡朔で詳现な説明を远加するこずができるこずに泚意しおください、䟋えば

 /*! \defgroup maze_generation   \brief  ,    .         : Eller's algorithm, randomized Kruskal's algorithm, cellular automaton algorithm, randomized Prim's algorithm. */
      
      





モゞュヌル内の文曞化された芁玠の配眮


この芁玠たたはその文曞化された芁玠をモゞュヌルに垰属させるには、2぀のアプロヌチがありたす。



最初のアプロヌチは、 \ ingroupコマンドを䜿甚するこずです。

 \ingroup <> ( )
      
      





欠点は、このコマンドを゜ヌスコヌドの各芁玠のドキュメントブロックに远加する必芁があるこずです。同じモゞュヌル内には非垞に倚くの芁玠があるためです。



したがっお、別のアプロヌチが必芁であり、2番目のアプロヌチはグルヌプの開始および終了コマンド@ {および@}を䜿甚するこずです。 \ defgroup 、 \ addtogroup 、および\ weakgroupコマンドずずもに䜿甚されるこずに泚意しおください。



䜿甚䟋を以䞋に瀺したす。

 /*! \defgroup <> ( ) @{ */ _ /*! @} */
      
      





この䟋の意味は明確である必芁がありたす。モゞュヌルを宣蚀し、モゞュヌルの最初ず最埌の文字で囲たれた特定の文曞化された芁玠を远加したす。



ただし、モゞュヌルは1回定矩する必芁があり、この宣蚀は1぀のファむルのみに含たれたす。たた、1぀のモゞュヌルの芁玠が異なるファむルに分割されるこずがよくあるため、グルヌプを再定矩せずに1぀远加する\ addtogroupコマンドを䜿甚する必芁がありたす別の芁玠

 /*! \addtogroup <> [( )] @{ */ _ /*! @} */
      
      





モゞュヌル名はオプションです。 実際、このコマンドは\ defgroupコマンドの類䌌物ずしお䜿甚でき、察応するモゞュヌルが定矩されおいない堎合、察応する名前ず識別子で䜜成されたす。



最埌に、 \ weakgroupコマンドは\ addtogroupコマンドず䌌おいたすが、異なるモゞュヌルぞの同じ芁玠の割り圓おに関連する競合がある堎合、それず比范しお単玔に優先順䜍が䜎いずいう違いがありたす。



サブモゞュヌルの䜜成


サブモゞュヌルを䜜成するには、サブモゞュヌルを定矩するずきに、他の文曞化された芁玠のように、特定のサブモゞュヌルに属性を割り圓おるだけで十分です。



以䞋に䟋を瀺したす。

 /*! \defgroup main_module   */ /*! \defgroup second_module   \ingroup main_module */
      
      





耇数のモゞュヌルを䜜成する䟋


以䞋は、モゞュヌルを䜜成する詳现な䟋です。

ファむルgenerate_maze.h
 /*! \defgroup generate_mazes   \ingroup maze \brief  ,    .         : Eller's algorithm, randomized Kruskal's algorithm, cellular automaton algorithm, randomized Prim's algorithm. */ ///@{ /*! \brief        \param width, height         \returns ,     Maze      */ Maze generateEller(int width, int height); /*! \brief         \param width, height         \returns ,     Maze      */ Maze generateKruskal(int width, int height); /*! \brief         \param width, height         \returns ,     Maze      */ Maze generatePrim(int width, int height); /*! \brief        \param width, height         \returns ,     Maze      */ Maze generateCellular(int width, int height); ///@}
      
      



Maze.hファむル
 /*! \defgroup maze  \brief  ,              */ ///@{ class Maze { /*   */ }; ///@}
      
      







文曞化ブロックのタむプが前述の䟋ず比范しおわずかに倉曎されおいるこずに泚意しおください。しかし、前述したように、これは基本的な圹割を果たさず、より近いオプションを遞択したす。



その結果、次のドキュメントを取埗したす。







ドキュメントのテキスト圢匏



ここで、コヌドの䞻芁な芁玠を文曞化する方法を䞀般的な甚語で理解した埌、文曞をより芖芚的で衚珟力豊かで完党なものにする方法を怜蚎したす。



ドキュメント内のコヌド


たずえば、ドキュメントの説明の䞭には、たずえば、機胜を説明するためのコヌドを远加する必芁がありたす。



\ Codeおよび\ endcodeコマンド


これを行う最も簡単で最も普遍的な方法の1぀は、次のように適甚される\ codeおよび\ endcodeコマンドを䜿甚するこずです。

 \code [ {<>}] ... \endcode
      
      





䜿甚される蚀語は、ドキュメントブロックが配眮されおいるファむル拡匵子に応じお自動的に決定されたすが、この動䜜が期埅を満たしおいない堎合は、拡匵子を明瀺的に指定できたす。



䜿甚䟋を考えおみたしょう。

 /*! \brief   \param a,b  ,           ,          .     : \code int gcd(int a, int b) { int r; while (b) { r = a % b; a = b; b = r; } return r; } \endcode */ int gcd(int a, int b);
      
      





結果は次のようになりたす。







コヌド䟋


別のファむルでコヌドを䜿甚する方法の䟋を瀺す方が䟿利な堎合がありたす。これを行うには、これらのファむルを別のディレクトリに配眮し、蚭定でパスを蚭定する必芁がありたす。

 EXAMPLE_PATH = __
      
      





ドキュメントでコヌド䟋を䜿甚できるいく぀かの方法を怜蚎しおください。



\

コマンド䟋このコマンドは、ドキュメントブロックがサンプルコヌドを参照しおいるこずを瀺しおいたす。

 \example <_>
      
      





゜ヌスコヌドのテキストが「䟋」セクションに远加され、䟋の゜ヌスコヌドで文曞化された芁玠がチェックされ、芋぀かった堎合は䟋ぞのリンクが説明に远加されたす。





Gcd.hファむル
 /*! \brief   \param a,b  ,           ,          . */ int gcd(int a, int b); /*! \example main.cpp  ,    */
      
      







ファむル䟋/ main.cpp
, EXAMPLE_PATH = examples

 void main() { int result = gcd(52,106); }
      
      







\ includeコマンド

文曞化された芁玠の説明にサンプルコヌドを远加するために、\ includeコマンドが䜿甚されたす。䞀般的な圢匏は次のずおりです。

 \include <_>
      
      





ファむルの内容を完党にコピヌし、コヌドのブロックずしおドキュメントに挿入したす\ codeコマンドで始たり\ endcodeコマンドで終わるブロック内のコヌドをフォヌマットするのに䌌おいたす。



チヌム\スニペット

チヌム\スニペット前のチヌムず同様に、それはあなたが党䜓のファむルを挿入するこずを可胜にし、その具䜓的な通路。圓然のこずながら、その圢匏はわずかに異なりたす。



 \snippet <_> ( _ )
      
      





特定のコヌドフラグメントを匷調衚瀺するには、フラグメント名の先頭ず末尟にドキュメントブロックを配眮する必芁がありたす。



 /// [ _ ] ... /// [ _ ]
      
      







文曞化されたオブゞェクトコヌドの自動実装


最埌に、Doxygenは、関数、メ゜ッド、クラス、構造などの本䜓を詳现な説明に自動的に挿入する機胜をサポヌトしおいたす。これを行うには、次のオプションを䜿甚したす。

 INLINE_SOURCES = YES
      
      







LaTeXを䜿甚した数匏


Doxygenを䜿甚するず、ドキュメントでTeXの匏を盎接䜿甚できたす。非垞に䟿利で、結果は非垞にたずもです。ただし、制限があるこずに泚意しおください。珟時点では、匏はHTMLおよびLaTeXのドキュメントにしか挿入できたせんが、通垞はこれで十分です。



数匏を衚瀺するには、珟圚2぀のアプロヌチがありたす。



  1. MathJaxを䜿甚しお数匏を衚瀺するには、蚭定ファむルで適切なオプションを蚭定する必芁がありたす。



     USE_MATHJAX = YES
          
          





  2. 適切な画像を生成し、ドキュメントに挿入したす。これらはすべお自動的に行われたすが、次のツヌルが必芁になりたすlatex、dvips、gs。デフォルトでは、匏はこのように衚瀺されたす。



数匏をドキュメントに远加する方法


ドキュメントに匏を远加するには、3぀の方法がありたす。ドキュメントの䟋を䜿甚しお、それぞれを連続しお怜蚎したす。



  1. 小文字の匏を䜿甚したす。これは、コマンド「\ f $」で始たりず終わりが囲たれおいたす。以䞋に䟋を瀺したす。



        \f$(x_1,y_1)\f$  \f$(x_2,y_2)\f$  \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$.
          
          





    結果は次のような線になりたす。 そしお 等しい



  2. 別の行から始たり、䞭倮に配眮されるリモヌト匏の䜿甚。前の匏ずは異なり、それらはコマンド「\ f [」で始たり、コマンド「\ f]」で終わりに囲たれおいたす。以䞋に䟋を瀺したす。

      \f[ |I_2|=\left| \int_{0}^T \psi(t) \left\{ u(a,t)- \int_{\gamma(t)}^a \frac{d\theta}{k(\theta,t)} \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi \right\} dt \right| \f]
          
          





    結果は次のような行になりたす。









  3. コマンド「\ F {}環境」、あり環境これはラテックス䞭の特定の環境の名前ですが- 。通垞のLaTeXドキュメントで指定されおいるかのように、指定された環境を䜿甚できたす。以䞋に䟋を瀺したす。



      \f{eqnarray*}{ g &=& \frac{Gm_2}{r^2} \\ &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\, \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ &=& 9.82066032\,\mbox{m/s}^2 \f}
          
          





    その結果、次の結果が埗られたすeqnarray *環境は、いく぀かの数匏を配眮するための番号付けされおいない環境です。











ドキュメント内の匏の導入䟋


LaTeX数匏を䜿甚したドキュメントの特定の䟋を考えおみたしょう。

 /*! \brief    \f$ n \f$ \param n - ,     \return \f$ n! \f$       \f$ n \f$,   : \f[ n! = \prod_{i = 1}^ni \f] */ int factorial(int n);
      
      





結果は以䞋のずおりです。







Markdownに぀いお簡単に


Markdownは軜量のマヌクアップ蚀語ですたずえば、こちらのドキュメントやドキュメントの特別なセクションを参照しおください。バヌゞョン1.8.0以降。Doxygenはこれたで限定的なサポヌトを提䟛し、ドキュメントを敎理する方法の1぀ずしお機胜したすたずえば、ドキュメントたたはHTML挿入を凊理するコマンドがありたすが、これは普遍的ではありたせん。



この蚀語の詳现ず原則をここで説明したくありたせん。したがっお、この蚀語でドキュメントを「装食」する方法を怜蚎するこずに限定したす。



 /*!     ------------------------------------------             : -   ; -  ; -      ; -  .       : >      .   ,     ,   , ,   .   —    ,       . > — CAR Hoare    . ![ ](image.png) */ int getRandomNumber();
      
      







結果は以䞋のずおりです。







たずめるず



この皮肉なこずに、私はやめるこずにしたした。ただ説明も觊れもされおいないこずは完党に理解しおいたすが、この蚘事がドキュメントゞェネレヌタヌの抂念を玹介し、Doxygenシステムに粟通し、ドキュメントの基本原則ずアプロヌチを説明し、関連する問題に簡単に觊れるずいう䞻芁な目暙を達成したこずを願っおいたすその蚭蚈ず詳现を䜿甚しお、将来の䜜業に備えお準備を敎えたす。



ご枅聎ありがずうございたした



さらなる研究のための文献ず参考文献



画像1.蚘事の執筆時に䜿甚された䞻な情報源は公匏文曞でした。

2. Doxygenに関連する倚数の質問に぀いお、ここで回答が寄せられたしたDoxygenの䜜成者もいたす。

サむクルの継続3ドキュメントの倖芳デザむン、Doxygenののグラフずチャヌトの構成。



All Articles