Skip to content
Snippets Groups Projects
Commit a677445f authored by Sina Ackermann's avatar Sina Ackermann
Browse files

[doxygen] Add instructions from clean-up for 3.0 release

parent 5a14a3f0
No related branches found
No related tags found
1 merge request!1736Docu/doxygen instructions
Please follow these instructions when commenting your code for the Doxygen class documentation.
When checking doxygen, the doxygen should be built and the doxyerr.log should have as little lines/errors as possible.
The Doxygen for a **file** should look like this:
```
/*!
* \file
* \ingroup Common
* \brief Manages the handling of time dependent problems
*/
```
It should always contain the `\file` first.
The `\ingroup` gives a Group that is as **precise** as possible and is part of the `modules.txt`
The `\brief` is a **short comment** on what happens in the file. Alternatively a `\copybrief` could be used. **Make sure the copybrief links to the correct section and is not ambigous!**
Additional text could be added similar to the function description.
A class could look like this:
```
/*!
* \ingroup Common
* \brief Manages the handling of time dependent problems.
*
* This class facilitates the time management of the simulation.
* It doesn't manage [...]
* [...]
* [...] index starting at 0.
*
* \note Time and time step sizes are in units of seconds
*/
```
The class should always have the proper `\ingroup` just like the file.
The `\brief` should always contain a **short description**, and only in very very rare occasions a class can have a `\copybrief`. In the end this is also documentation for users that do not build doxygen and `\copybriefs` from another file are most likely not very useful.
The main part should be an in depth explanation of what is done. This should contain math-expressions where applicable. They can look like the following:
```
* This class implements a spline \f$s(x)\f$ for which, given \f$n\f$ sampling
* points \f$x_1, \dots, x_n\f$, the following conditions hold
*\f{align*}{
s(x_i) & = y_i \quad \forall i \in \{1, \dots, n \}\\
s'(x_1) & = m_1 \\
s'(x_n) & = m_n
\f}
*
```
For a **function** in a file the Doxygen can look like this:
```
/*!
* \brief Set the current simulated time and the time step index.
*
* \param t The time \f$\mathrm{[s]}\f$ which should be jumped to
* \param stepIdx The new time step index
*/
void setTime(Scalar t, int stepIdx)
{ time_ = t; timeStepIdx_ = stepIdx; }
```
The function has a **short comment** with the `\brief`.
If there are **function-arguments** that are not self-explanatory, they should be described using `\param`.
**Always explain all params or no params at all!** Otherwise Doxygen will throw an error.
Template parameters are documented with `\tparam`.
Additional Doxygen-commands that might be useful are `\note` for giving an important note/hint on what the function does as well as `\return` which specifies the return value (if applicable).
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment