Blame programming-guidelines/pt_BR/documentation.page

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="pt-BR">
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>A equipe do 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>Adicionando documentação a bibliotecas e APIs</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Rafael Fontenelle</mal:name>
Packit 1470ea
      <mal:email>rafaelff@gnome.org</mal:email>
Packit 1470ea
      <mal:years>2017</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Documentação</title>
Packit 1470ea
Packit 1470ea
  <synopsis>
Packit 1470ea
    <title>Resumo</title>
Packit 1470ea
Packit 1470ea
    <list>
Packit 1470ea
      <item>

Use gtk_doc com configurações atualizadas para documentação de API. (<link xref="#gtk-doc"/>)

</item>
Packit 1470ea
      <item>

Use entidades XML para inclusão de símbolos externos à documentação. (<link xref="#build-system"/>)

</item>
Packit 1470ea
      <item>

Use uma tabela de conteúdos consistente e padrão para toda documentação de API para manter a familiaridade. (<link xref="#standard-layout"/>)

</item>
Packit 1470ea
      <item>

Use <cmd>gdbus-codegen</cmd> para gerar documentação de API do D-Bus para incluir na compilação de gtk-doc. (<link xref="#dbus-api"/>)

</item>
Packit 1470ea
      <item>

Adicione anotações de introspecção a toda documentação de API. (<link xref="#introspection-annotations"/>)

</item>
Packit 1470ea
      <item>

Adicione linhas Since para toda documentação de API. (<link xref="#symbol-versioning"/>)

</item>
Packit 1470ea
      <item>

Habilite testes de 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
    

O sistema de documentação preferido para bibliotecas do GNOME é o <link href="http://www.gtk.org/gtk-doc/">gtk-doc</link>, o qual extrai comentários em linha do código e permite que você compile um documento <link href="http://docbook.org/">DocBook</link> e coleção de páginas HTML. Esses podem ser lidos em <link href="https://wiki.gnome.org/Apps/Devhelp">Devhelp</link>. Muito da infraestrutura do GNOME é construído para lidar com documentação escrita usando gtk-doc.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="build-system">
Packit 1470ea
    <title>Sistema de compilação</title>
Packit 1470ea
Packit 1470ea
    

Para integrar gtk-doc a um sistema de compilação do projeto, siga as <link href="https://developer.gnome.org/gtk-doc-manual/stable/settingup.html.en"> instruções no manual do gtk-doc</link>. Note que enquanto o arquivo <file>sections.txt</file> é gerado automaticamente na primeira vez que o gtk-doc é executado, ele não é gerado subsequentemente, e deve ser mantido atualizado. Ele também deve estar <link href="https://developer.gnome.org/gtk-doc-manual/stable/settingup_vcs.html.en"> no controle de versão</link>.

Packit 1470ea
Packit 1470ea
    

A opção --flavour no-tmpl do gtk-doc deve ser usada, e o modo XML deve ser usado no lugar do SGML. (modo tmpl e SGML estão ambos desatualizados e são mais lentos que XML.)

Packit 1470ea
    

Se a versão do pacote for necessária para ser substituída na documentação, crie um arquivo chamado <file>docs/version.xml.in</file>, contendo:

Packit 1470ea
    @PACKAGE_VERSION@
Packit 1470ea
    

Adicione-o a AC_CONFIG_FILES no <file>configure.ac</file>, então inclua-o ao arquivo central da documentação (<file>*-docs.xml</file>) usando: <!ENTITY version SYSTEM "version.xml"> no DOCTYPE sobre o documento. A versão do pacote pode ser usada em linha como &version;.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="standard-layout">
Packit 1470ea
    <title>Layout padrão</title>
Packit 1470ea
Packit 1470ea
    

Usar um layout padrão para a tabela de conteúdos, seções, apêndices etc. significa que o mesmo modelo de <file>nome-do-projeto-docs.xml</file> pode ser reusado com algumas alterações entre projetos. Ele também significa que o layout da documentação é similar por todos os projetos, fazendo dele mais familiar para os desenvolvedores.

Packit 1470ea
Packit 1470ea
    

O layout a seguir é sugerido:

Packit 1470ea
    <listing>
Packit 1470ea
      <title><file>nome-do-projeto-docs.xml</file></title>
Packit 1470ea
      <desc>Um arquivo de modelo de nível superior do gtk-doc para um projeto</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>Licenciamento</title>
Packit 1470ea
    

É importante tornar a licença usada para referências de API bem clara, especialmente se elas contiverem exemplos de código que poderia ser copiado.

Packit 1470ea
Packit 1470ea
    

Geralmente, projetos usam a mesma licença para sua referência de API que para o código do projeto em si, para evitar confusão. Alguns projetos usam CC-BY-SA 3.0 para toda documentação de referência. A escolha é sua.

Packit 1470ea
Packit 1470ea
    

Como mostrado no <link xref="#standard-layout">Layout padrão</link>, você deve incluir um <file>license.xml</file> no arquivo DocBook de nível superior do gtk-doc, o qual fornece o texto completo para sua licença de documentação.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="public-api">
Packit 1470ea
    <title>API pública</title>
Packit 1470ea
Packit 1470ea
    

Todas APIs públicas devem ter comentários de gtk-doc. Para funções, essas devem ser colocadas no arquivo fonte, diretamente sobre a função.

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
    

Comentários de documentação para macros, tipos de função, structs de classe, etc. devem ser colocados próximo às definições, geralmente em arquivos de cabeçalhos.

Packit 1470ea
Packit 1470ea
    

Introduções de seção devem ser colocadas no arquivo fonte que elas descrevem, após o cabeçalho de licença:

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
    

Tenha em mente que para incluir uma função, macro, tipo de função ou tipo de struct, ele precisa ser listado no arquivo de <file>nomemodulo-sections.txt</file> da documentação.

Packit 1470ea
Packit 1470ea
    

Para documentação adequadamente uma nova classe, ele precisa ser dado em sua própria seção no <file>nomemodulo-sections.txt</file> e a função get_type() para sua classe precisa ser listada em seu <file>nomemodulo.types</file>.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="introspection-annotations">
Packit 1470ea
    <title>Anotações de introspecção</title>
Packit 1470ea
Packit 1470ea
    

Cada comentário gtk-doc deve ter as <link href="https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations">anotações de introspeção de GObject</link> adequada. Essa são úteis por dois motivos:

Packit 1470ea
    <list type="numbered">
Packit 1470ea
      <item>

Elas adicionam informações importantes sobre tipos de parâmetros, anulabilidade e gerenciamento de memória para a documentação de API C gerada pelo gtk-doc.

</item>
Packit 1470ea
      <item>

Elas permitem que APIs públicas sejam automaticamente vinculadas a outras linguagens, tais como Python ou JavaScript.

</item>
Packit 1470ea
    </list>
Packit 1470ea
Packit 1470ea
    

Anotações de introspecção adicionam informações às APIs (funções, parâmetros de função, valor de retorno de função, estruturas, propriedades de GObject, sinais de GObject) nas quais, do contrário, não está presente na API C legível por máquina e existe apenas na forma de documentação legível por humano ou convenção. Elas são muito importantes.

Packit 1470ea
Packit 1470ea
    

Em comentários de gtk-doc, anotações devem ser preferidos a equivalentes legíveis por humanos, Por exemplo, ao documentar o parâmetro de uma função que pode ser NULL, use a anotação (nullable) e, vez de algum texto:

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
    

Em vez de:

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
    

Para mais informação sobre introspecção, veja as <link xref="introspection">diretrizes de introspecção</link>.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="symbol-versioning">
Packit 1470ea
    <title>Versionamento de símbolo</title>
Packit 1470ea
Packit 1470ea
    

Quando um símbolo é adicionado à API pública, ele deve ter um comentário de documentação adicionado. Esse comentário deve sempre conter uma linha Since com o número da versão de pacote do lançamento que primeiro conterá a nova API. Isso deve ser o número que está no <file>configure.in</file> se<link xref="versioning#release-process">incrementação de versão pós-lançamento</link> estiver sendo usado.

Packit 1470ea
Packit 1470ea
    

Por exemplo:

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 usa essa informação para gerar índices das APIs adicionadas em cada lançamento. Essas devem ser adicionadas ao <file>*-docs.xml</file> principal como um apêndice:

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>APIs de D-Bus</title>
Packit 1470ea
Packit 1470ea
    

Descrições de interface D-Bus contêm comentários de documentação, e podem ser extraídas do XML usando <cmd>gdbus-codegen</cmd> e transformadas em arquivos DocBook para serem incluídas pelo gtk-doc.

Packit 1470ea
Packit 1470ea
    

Os arquivos DocBook podem ser incluídos no arquivo <file>*-docs.xml</file> principal usando:

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
    

Os arquivos XML gerados devem ser incluídos na variável content_files em seu <file>Makefile.am</file> de gtk-doc, do contrário a compilação vai falhar. (Isso é para corrigir situações nas quais builddir não é igual a srcdir.)

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="keeping-up-to-date">
Packit 1470ea
    <title>Mantendo a documentação atualizada</title>
Packit 1470ea
Packit 1470ea
    

Packit 1470ea
      gtk-doc comes with support for checking the documentation with some basic
Packit 1470ea
      tests. These check that all version indexes are included in the main
Packit 1470ea
      <file>*-docs.xml</file> file and that all symbols are documented, among
Packit 1470ea
      other things.
Packit 1470ea
    

Packit 1470ea
Packit 1470ea
    

Esses testes devem sempre estar habilitados, adicionando o seguinte para seu <file>Makefile.am</file> de gtk-doc:

Packit 1470ea
    TESTS = $(GTKDOC_CHECK)
Packit 1470ea
Packit 1470ea
    

Eles serão, então, executados como parte do <cmd>make check</cmd>.

Packit 1470ea
  </section>
Packit 1470ea
</page>