Tworzenie dokumentacji

„Jeżeli dokumentacja nie powstaje równocześnie z kodem to nie powstanie nigdy.”

Skąd się bierze nieudokumentowany kod?

Jak wymusić dobre praktyki

Narzędzia

Zastosowanie

C# i komentarze z tagami XML

Tagi

Referencje

Przykładowy kod

Struktura i formatowanie tekstu

Listy i tabele

<list type="bullet" | "number" | "table">
   <listheader>
      <term>term</term>
      <description>description</description>
   </listheader>
   <item>
      <term>term</term>
      <description>description</description>
   </item>
</list>

Dokumentacja w osobnym pliku

<include file='filename' path='tagpath[@name=„id”]' />
pozwala pobrać opis z zewnętrznego pliku XML. Argumentami jest nazwa pliku, ścieżka do tagu XML, jego nazwa i identyfikator

/// <include file='xml_include_tag.doc' path='MyDocs/MyMembers[@name="test"]/*' />
class Test
{
   static void Main()
   {
   }
}

Identyfikacja obiektów w pliku XML

Automatyczne uzupełnianie

// Przed:
 
public bool StringIsValid( string validateMe ) {}
 
 
// Po wpisaniu 3x/ (///) 
 
/// <summary>
/// 
/// </summary>
/// <param name="validateMe"></param>
/// <returns></returns>
public bool StringIsValid( string validateMe ) {}

GhostDoc

Dokumentacja pliku

Wersja Pro

Sandcastle

SHFB GUI

Szablon projektu w VS

Konfiguracja

Doxygen

Zastosowanie

Inne cechy

Narzędzia

Komentarze

Dla języków wywodzących składnię od C: C/C++/C#/Objective-C/PHP/Java

Styl JavaDoc Styl QtDoc
Wielolinijkowe
/** 
tekst  
**/ 
/*!
text
*/ 
Jednolinijkowe
/// tekst 
//! tekst 

Struktura

/**
* \brief Krótki opis
*
* Szczegółowy opis
* dodatkowa linia
*
* @param Opis wejściowego parametru funkcji lub
metody
* @param ...
* @return Opis zwracanej wartości
*/

Doxygen jest bardzo elastyczny, wspiera różnorodne formy komentowania kodu

Komendy strukturalne

Markdown syntax

Listy

/*!
- Poziom 1
  Tekst dla poziomu 1
- Poziom 2
  + element 2.1
  + element 2.1
- Poziom 3
  * element 3.1
*/

Tabele

nagłówek 1 | nagłówek 2
---------- | -----------
komórka    | komórka
komórka    | komórka

Tagi HTML

/*!
Lista
<ul>
  <li> element listy
  <ol>
    <li> element list <br> dalszy ciąg
    <li> element listy
  </ol>
</ul>
*/

Grupowanie

Każda grupa będzie się znajdować na osobnej stronie. Elementami grupy mogą być pliki, klasy, przestrzenie nazw, zmienne, itd.

\defgroup label name

Dodawanie do grupy

\addtogoup label

Odnośnik do grupy

\ingroup label

Referencja

\ref label

Wzory matematyczne

 \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]

Narzędzie konsolowe

Generowanie pliku konfiguracji

doxygen -g [plik_konfiguracji]

Generowanie dokumentacji

doxygen plik_konfiguracji

Szablony stylów

HTML

doxygen -w html header.html footer.html stylesheet.css

LaTeX

doxygen -w latex header.tex doxygen.sty

RFT

doxygen -w rtf rtfstyle.cfg

Doxygen GUI

Tryb działania

Wyjście

Diagramy

Kolory HTML

Expert mode

Więcej informacji