|
Packit |
1470ea |
|
|
Packit |
1470ea |
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2003/XInclude" type="topic" id="documentation" xml:lang="cs">
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<info>
|
|
Packit |
1470ea |
<link type="guide" xref="index#general-guidelines"/>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<credit type="author copyright">
|
|
Packit |
1470ea |
<name>Federico Mena-Quintero</name>
|
|
Packit |
1470ea |
<email its:translate="no">federico@gnome.org</email>
|
|
Packit |
1470ea |
<years>2013</years>
|
|
Packit |
1470ea |
</credit>
|
|
Packit |
1470ea |
<credit type="author copyright">
|
|
Packit |
1470ea |
<name>Philip Withnall</name>
|
|
Packit |
1470ea |
<email its:translate="no">philip.withnall@collabora.co.uk</email>
|
|
Packit |
1470ea |
<years>2015</years>
|
|
Packit |
1470ea |
</credit>
|
|
Packit |
1470ea |
<credit type="author copyright">
|
|
Packit |
1470ea |
<name>Tým GTK+</name>
|
|
Packit |
1470ea |
</credit>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<desc>Doplnění dokumentace ke knihovnám a k API</desc>
|
|
Packit |
1470ea |
</info>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<title>Dokumentace</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<synopsis>
|
|
Packit |
1470ea |
<title>Shrnutí</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<list>
|
|
Packit |
1470ea |
<item>Pro dokumentaci API používejte gtk-doc s nastavením pro udržování aktuální podoby. (<link xref="#gtk-doc"/>) </item>
|
|
Packit |
1470ea |
<item>Používejte prvky XML pro zahrnutí externích symbolů do dokumentace. (<link xref="#build-system"/>) </item>
|
|
Packit |
1470ea |
<item>Používejte jednotný standardní obsah ve všech dokumentacích k API, aby šla udržovat podle běžných zvyklostí. (<link xref="#standard-layout"/>) </item>
|
|
Packit |
1470ea |
<item>Používejte <cmd>gdbus-codegen</cmd> k vygenerování dokumentace k API pro D-Bus, která se zahrne do sestavení gtk-doc. (<link xref="#dbus-api"/>) </item>
|
|
Packit |
1470ea |
<item>Do veškeré dokumentace k API přidejte anotace k introspekci. (<link xref="#introspection-annotations"/>) </item>
|
|
Packit |
1470ea |
<item>Do všech dokumentací k API doplňte řádky Since . (<link xref="#symbol-versioning"/>) </item>
|
|
Packit |
1470ea |
<item>Povolte testy gtk-doc. (<link xref="#keeping-up-to-date"/>) </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
</synopsis>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="gtk-doc">
|
|
Packit |
1470ea |
<title>gtk-doc</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Upřednostňovaným systémem pro dokumentovaní knihoven GNOME je <link href="http://www.gtk.org/gtk-doc/">gtk-doc</link>, který získává vložené komentáře z kódu, aby z nich sestavil dokument <link href="http://docbook.org/">DocBook</link> a sadu stránek HTML. Ty je pak možné číst v aplikaci <link href="https://wiki.gnome.org/Apps/Devhelp">Devhelp</link>. Velká část infrastruktury GNOME je postavena tak, aby pracoval s dokumentací napsanou pomocí gtk-doc.
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="build-system">
|
|
Packit |
1470ea |
<title>Systém sestavení</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Při začleňování gtk-doc do systému sestavení u projektu <link href="https://developer.gnome.org/gtk-doc-manual/stable/settingup.html.en">se řiďte instrukcemi v příručce k gtk-doc</link>. Přípomínáme, že soubor <file>sections.txt</file> je sice vygenerován automaticky, ale jen při prvním spuštění gtk-doc. Následně již generován není a musí být udržován ručně. Proto by měl být také <link href="https://developer.gnome.org/gtk-doc-manual/stable/settingup_vcs.html.en">v systému pro správu verzí</link>.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Měli byste používat variantu gtk-doc no-tmpl a režim XML namísto SGML. (Režim tmpl a SGML jsou zastaralé a pomalejší než XML.)
|
|
Packit |
1470ea |
Když je zapotřebí vložit číslo balíčku do textu dokumentace, vytvořte soubor s názvem <file>docs/version.xml.in</file>, který bude obsahovat:
|
|
Packit |
1470ea |
@PACKAGE_VERSION@
|
|
Packit |
1470ea |
Přidejte jej do AC_CONFIG_FILES v <file>configure.ac</file> a pak jej vložte do hlavního souboru dokumentace (<file>*-docs.xml</file>) pomocí: <!ENTITY version SYSTEM "version.xml"> v DOCTYPE na začátku dokumentu. Verzi balíčku pak můžete vkládat pomocí &version; .
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="standard-layout">
|
|
Packit |
1470ea |
<title>Standardní uspořádání</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Použití standardního uspořádání pro obsah, oddíly, dodatky atd. znamená, že stejnou šablonu <file>název-projektu-docs.xml</file> můžete znovu použít s minimálními změnami pro různé projekty. A rovněž to znamená, že uspořádání dokumentace bude obdobné napříč všemi projekty, takže se v ní vývojáři budou lépe orientovat.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Je doporučováno následující uspořádání:
|
|
Packit |
1470ea |
<listing>
|
|
Packit |
1470ea |
<title><file>název-projektu-docs.xml</file></title>
|
|
Packit |
1470ea |
<desc>Soubor gtk-doc s šablonou nejvyšší úrovně pro projekt</desc>
|
|
Packit |
1470ea |
<xi:include href="example-docs.xml" parse="text"/>
|
|
Packit |
1470ea |
</listing>
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="licensing">
|
|
Packit |
1470ea |
<title>Licencování</title>
|
|
Packit |
1470ea |
Je důležité, aby licence použitá pro referenční příručku k API, byla čistá, hlavně když je součástí dokumentace i ukázkový kód, který je možné kopírovat.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Typicky používá projekt pro svoji referenční příručku tu stejnou licenci, jako pro vlastní kód projektu, aby se předešlo nejasnostem. Některé projekty zase používají pro veškerou svoji dokumentaci CC-BY-SA 3.0. Volba je čistě na vás.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Jak je ukázáno ve <link xref="#standard-layout">Standardním uspořádání</link>, měli byste do souboru gtk-doc DocBook nejvyšší úrovně vložit <file>licence.xml</file>, který poskytne úplný text licence vaší dokumentace.
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="public-api">
|
|
Packit |
1470ea |
<title>Veřejná API</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Veškerá veřejná API musí mít komentáře gtk-doc. Pro funkce by měly být umístěny ve zdrojovém souboru, přímo nad funkcí.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
/**
|
|
Packit |
1470ea |
* gtk_get_flow:
|
|
Packit |
1470ea |
* @widget: a #GtkWidget
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* Gets the flow of a widget.
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* Note that flows may be laminar or turbulent...
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* Returns: (transfer none): the flow of @widget
|
|
Packit |
1470ea |
*/
|
|
Packit |
1470ea |
GtkFlow *
|
|
Packit |
1470ea |
gtk_get_flow (GtkWidget *widget)
|
|
Packit |
1470ea |
{
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
...
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
}
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Dokumentační komentáře pro makra, typy funkcí, struktury tříd atd. by měly být umístěny vedle definici, typicky v hlavičkových souborech.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Úvody k jednotlivým oddílům by měly být umístěné ve zdrojových souborech, které popisují, za hlavičkou s licencí:
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
/**
|
|
Packit |
1470ea |
* SECTION:gtksizerequest
|
|
Packit |
1470ea |
* @Short_Description: Height-for-width geometry management
|
|
Packit |
1470ea |
* @Title: GtkSizeRequest
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* The GtkSizeRequest interface is GTK+'s height-for-width (and
|
|
Packit |
1470ea |
* width-for-height) geometry management system.
|
|
Packit |
1470ea |
* ...
|
|
Packit |
1470ea |
*/
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Mějte na paměti, že aby se funkce, makro, typ funkce nebo typ struktura byly součástí, je zapotřebí je uvést v souboru <file>modulename-sections.txt</file> vaší dokumentace.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Správné zdokumentování nové třídy vyžaduje poskytnutí jejího vlastního oddílu v <file>modulename-sections.txt</file>, musí být vložená v vašem <file>modulename-docs.sgml</file> nejvyšší úrovně a funkce get_type() pro vaši třídu musí být uvedená v <file>modulename.types</file>.
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="introspection-annotations">
|
|
Packit |
1470ea |
<title>Poznámky k introspekci</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Každý komentář gtk-doc by měl mít příslušné <link href="https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations">anotace k introspekci GObject</link>. To je užitečné ze dvou důvodů:
|
|
Packit |
1470ea |
<list type="numbered">
|
|
Packit |
1470ea |
<item>Přidá to důležitou informaci o typech parametrů, možných prázdných hodnotách a správě paměti do dokumentace k API C vygenerované pomocí gtk-doc. </item>
|
|
Packit |
1470ea |
<item>Umožní to veřejným API navázat se automaticky na další jazyky, jako třeba Python nebo JavaScript. </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Anotace k introspekci přidává do API (funkce, parametry funkcí, návratové hodnoty funkcí, struktury, vlastnosti GObject, signály GObject) informace, které ve strojově čitelné podobě API v C nejsou jinak dostupné a existují jen ve formě čitelné člověkem v dokumentaci nebo jako zvyklosti. Proto jsou velmi důležité.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
V komentářích gtk-doc by se měla dávat přednost anotacím před variantou čitelnou pro člověka. Například, když dokumentujete parametr funkce, který může nabývat hodnoty NULL , použijte namísto nějakého textu raději anotaci (nullable) :
|
|
Packit |
1470ea |
/**
|
|
Packit |
1470ea |
* my_function:
|
|
Packit |
1470ea |
* @parameter: (nullable): some parameter which affects something
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* Body of the function documentation.
|
|
Packit |
1470ea |
*/
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Použijte namísto:
|
|
Packit |
1470ea |
/**
|
|
Packit |
1470ea |
* my_bad_function:
|
|
Packit |
1470ea |
* @parameter: some parameter which affects something, or %NULL to ignore
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* Bad body of the function documentation.
|
|
Packit |
1470ea |
*/
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Více informací k introspekci najdete v <link xref="introspection">pokynech k introspekci</link>.
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="symbol-versioning">
|
|
Packit |
1470ea |
<title>Číslování verzí symbolů</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Kdykoliv je do veřejného API přidán nějaký symbol, měl by pro něj být přidán i dokumentační komentář. Ten by měl vždy obsahovat řádek Since s číslem verze vydání balíčku, který poprvé obsahuje nové API. Mělo by se jednat o číslo verze, které se právě nachází v <file>configure.ac</file>, za předpokladu, že používáte <link xref="versioning#release-process">zvyšování čísla verze po vydání</link>.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Například:
|
|
Packit |
1470ea |
/**
|
|
Packit |
1470ea |
* my_function:
|
|
Packit |
1470ea |
* @param: some parameter
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* Body of the function documentation.
|
|
Packit |
1470ea |
*
|
|
Packit |
1470ea |
* Since: 0.5.0
|
|
Packit |
1470ea |
*/
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
gtk-doc používá tyto informace k vygenerování rejstříku API přidaných v jednotlivých vydáních. Do <file>*-docs.xml</file> by jako dodatek mělo být přidáno následující:
|
|
Packit |
1470ea |
<part>
|
|
Packit |
1470ea |
<title>Appendices</title>
|
|
Packit |
1470ea |
<index id="api-index-full">
|
|
Packit |
1470ea |
<title>API Index</title>
|
|
Packit |
1470ea |
<xi:include href="xml/api-index-full.xml"><xi:fallback/></xi:include>
|
|
Packit |
1470ea |
</index>
|
|
Packit |
1470ea |
<index id="api-index-deprecated">
|
|
Packit |
1470ea |
<title>Index of deprecated symbols</title>
|
|
Packit |
1470ea |
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback/></xi:include>
|
|
Packit |
1470ea |
</index>
|
|
Packit |
1470ea |
<index role="0.1.0">
|
|
Packit |
1470ea |
<title>Index of new symbols in 0.1.0</title>
|
|
Packit |
1470ea |
<xi:include href="xml/api-index-0.1.0.xml"><xi:fallback/></xi:include>
|
|
Packit |
1470ea |
</index>
|
|
Packit |
1470ea |
<!-- More versions here. -->
|
|
Packit |
1470ea |
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
|
Packit |
1470ea |
</part>
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="dbus-api">
|
|
Packit |
1470ea |
<title>API pro D-Bus</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Popisy rozhraní D-Bus obsahují dokumentační komentáře a ty je možné získat z XML pomocí <cmd>gdbus-codegen</cmd> a nasměrovat do souborů DocBook, aby byly začleněny pomocí gtk-doc.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Soubory DocBook mohou být vloženy do souboru <file>*-docs.xml</file> pomocí:
|
|
Packit |
1470ea |
<chapter>
|
|
Packit |
1470ea |
<title>C Interfaces</title>
|
|
Packit |
1470ea |
<partintro>
|
|
Packit |
1470ea |
<para>C wrappers for the D-Bus interfaces.</para>
|
|
Packit |
1470ea |
</partintro>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<xi:include href="xml/SomeDBusService.xml"/>
|
|
Packit |
1470ea |
<xi:include href="xml/SomeOtherService.xml"/>
|
|
Packit |
1470ea |
</chapter>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Vygenerované soubory XML musí být zahrnuté v proměnné content_files ve vašem <file>Makefile.am</file> pro gtk-doc, jinak sestavení selže. (Je to kvůli nápravě situací, kdy složka builddir není shodná se srcdir .)
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="keeping-up-to-date">
|
|
Packit |
1470ea |
<title>Udržování dokumentace v aktuálním stavu</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
gtk-doc obsahuje podporu pro kontrolu dokumentace pomocí pár základních testů. Mimo jiných věcí se zkontroluje, jestli jsou všechny verze indexů vložené v hlavním souboru <file>*-docs.xml</file> a jestli jsou zdokumentované všechny symboly.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Tyto testy by měly být vždy povolené přidáním následujícího do <file>Makefile.am</file> pro váš gtk-doc:
|
|
Packit |
1470ea |
TESTS = $(GTKDOC_CHECK)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Budou pak spouštěny jako součást <cmd>make check</cmd>.
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
</page>
|