GPS provides a documentation generator which processes source files and generates annotated HTML files.
It is based on the source cross-reference information (e.g. generated by GNAT for Ada files). This means that you should ensure that cross-reference information has been generated before generating the documentation. It also relies on standard comments that it extracts from the source code. Note that unlike other similar tools, no macro needs to be put in your comments. The engine in charge of extracting them coupled with the cross-reference engine gives GPS all the flexibility needed to generate accurate documentation.
The documentation is put by default into a directory called doc, created under the object directory of the root project loaded in GPS. If no such object directory exists, then it is directly created in the same directory as the root project. This behavior can be modified by specifying the attribute Documentation_Dir in the package IDE of your root project:
project P is package IDE is for Documentation_Dir use "html"; end IDE; end P;
Once the documentation is generated, the main documentation file is loaded in your default browser.
The documentation generator uses a set of templates files to control the final rendering. This means that you can control precisely the rendering of the generated documentation. The templates used for generating the documentation can be found under <install_dir>/share/gps/docgen2. If you need a different layout as the proposed one, you can change directly those files.
In addition, user-defined structured comments can be used to improve the generated documentation. The structured comments use xml-like tags. To define your own set of tags, please refer to the GPS python extension documentation (from GPS Help menu, choose 'Python extensions').
The string values inside those tags are handled very roughly the same way as in regular xml: duplicated spaces and line returns are ignored. One exception is that the layout is preserved in the following cases:
The line starts with "- " or "* "
The line starts with a capital letter
Some default tags have been already defined by GPS in <install_dir>/share/gps/plug-ins/docgen_base_tags.py. The tags handled are:
summary
description
parameter (attribute "name" is expected)
exception
seealso
c_version
group
code
The following sample shows how those tags are translated:
-- <description> -- This is the main description for this package. It can contain a complete -- description with some xml characters as < or >. -- </description> -- <group>Group1</group> -- <c_version>1.0.0</c_version> package Pkg is procedure Test (Param : Integer); -- <summary>Test procedure with a single parameter</summary> -- <parameter name="Param">An Integer</parameter> -- <exception>No exception</exception> -- <seealso>Test2</seealso> procedure Test2 (Param1 : Integer; Param2 : Natural); -- <summary>Test procedure with two parameters</summary> -- <parameter name="Param1">An Integer</parameter> -- <parameter name="Param2">A Natural</parameter> -- <exception>System.Assertions.Assert_Failure if Param1 < 0</exception> -- <seealso>Test</seealso> end Pkg;
Its documentation will be:
The documentation generator can be invoked from the Tools->Documentation
menu:
In addition, when relevant (depending on the context), right-clicking with
your mouse will show a Documentation
contextual menu.
From a source file contextual menu, you have one option called Generate for <filename>, that will generate documentation for this file and if needed its corresponding body (see The Preferences Dialog).
From a project contextual menu (see The Project View), you will have the choice between generating documentation for all files from the selected project only or from the selected project recursively.
You will find the list of all documentation options in The Preferences Dialog.
Note that the documentation generator relies on the ALI files created by GNAT. Depending on the version of GNAT used, the following restrictions may or may not apply: