doc: Add to Doxygen documentation guidelines

and update the table of contents.

Co-authored-by: Jon Layton <me@jonl.io>
This commit is contained in:
Jon Layton 2019-09-23 18:44:08 -04:00 committed by Jon Atack
parent 3ce8298888
commit c902c4c0c6
No known key found for this signature in database
GPG key ID: 4F5721B3D0E3921D

View file

@ -9,6 +9,7 @@ Developer Notes
- [Coding Style (C++)](#coding-style-c) - [Coding Style (C++)](#coding-style-c)
- [Coding Style (Python)](#coding-style-python) - [Coding Style (Python)](#coding-style-python)
- [Coding Style (Doxygen-compatible comments)](#coding-style-doxygen-compatible-comments) - [Coding Style (Doxygen-compatible comments)](#coding-style-doxygen-compatible-comments)
- [Generating Documentation](#generating-documentation)
- [Development tips and tricks](#development-tips-and-tricks) - [Development tips and tricks](#development-tips-and-tricks)
- [Compiling for debugging](#compiling-for-debugging) - [Compiling for debugging](#compiling-for-debugging)
- [Compiling for gprof profiling](#compiling-for-gprof-profiling) - [Compiling for gprof profiling](#compiling-for-gprof-profiling)
@ -34,6 +35,9 @@ Developer Notes
- [Source code organization](#source-code-organization) - [Source code organization](#source-code-organization)
- [GUI](#gui) - [GUI](#gui)
- [Subtrees](#subtrees) - [Subtrees](#subtrees)
- [Upgrading LevelDB](#upgrading-leveldb)
- [File Descriptor Counts](#file-descriptor-counts)
- [Consensus Compatibility](#consensus-compatibility)
- [Scripted diffs](#scripted-diffs) - [Scripted diffs](#scripted-diffs)
- [Release notes](#release-notes) - [Release notes](#release-notes)
- [RPC interface guidelines](#rpc-interface-guidelines) - [RPC interface guidelines](#rpc-interface-guidelines)
@ -137,12 +141,17 @@ For example, to describe a function use:
```c++ ```c++
/** /**
* ... text ... * ... Description ...
* @param[in] arg1 A description *
* @param[in] arg2 Another argument description * @param[in] arg1 input description...
* @pre Precondition for function... * @param[in] arg2 input description...
* @param[out] arg3 output description...
* @return Return cases...
* @throws Error type and cases...
* @pre Pre-condition for function...
* @post Post-condition for function...
*/ */
bool function(int arg1, const char *arg2) bool function(int arg1, const char *arg2, std::string& arg3)
``` ```
A complete list of `@xxx` commands can be found at http://www.doxygen.nl/manual/commands.html. A complete list of `@xxx` commands can be found at http://www.doxygen.nl/manual/commands.html.
@ -157,44 +166,73 @@ To describe a class, use the same construct above the class definition:
* @see GetWarnings() * @see GetWarnings()
*/ */
class CAlert class CAlert
{
``` ```
To describe a member or variable use: To describe a member or variable use:
```c++ ```c++
int var; //!< Detailed description after the member
```
or
```c++
//! Description before the member //! Description before the member
int var; int var;
``` ```
or
```c++
int var; //!< Description after the member
```
Also OK: Also OK:
```c++ ```c++
/// ///
/// ... text ... /// ... Description ...
/// ///
bool function2(int arg1, const char *arg2) bool function2(int arg1, const char *arg2)
``` ```
Not OK (used plenty in the current source, but not picked up): Not picked up by Doxygen:
```c++ ```c++
// //
// ... text ... // ... Description ...
// //
``` ```
Also not picked up by Doxygen:
```c++
/*
* ... Description ...
*/
```
A full list of comment syntaxes picked up by Doxygen can be found at http://www.doxygen.nl/manual/docblocks.html, A full list of comment syntaxes picked up by Doxygen can be found at http://www.doxygen.nl/manual/docblocks.html,
but the above styles are favored. but the above styles are favored.
Documentation can be generated with `make docs` and cleaned up with `make clean-docs`. The resulting files are located in `doc/doxygen/html`; open `index.html` to view the homepage. Recommendations:
Before running `make docs`, you will need to install dependencies `doxygen` and `dot`. For example, on macOS via Homebrew: - Avoiding duplicating type and input/output information in function
``` descriptions.
brew install graphviz doxygen
``` - Use backticks (&#96;&#96;) to refer to `argument` names in function and
parameter descriptions.
- Backticks aren't required when referring to functions Doxygen already knows
about; it will build hyperlinks for these automatically. See
http://www.doxygen.nl/manual/autolink.html for complete info.
- Avoid linking to external documentation; links can break.
- Javadoc and all valid Doxygen comments are stripped from Doxygen source code
previews (`STRIP_CODE_COMMENTS = YES` in [Doxyfile.in](doc/Doxyfile.in)). If
you want a comment to be preserved, it must instead use `//` or `/* */`.
### Generating Documentation
The documentation can be generated with `make docs` and cleaned up with `make
clean-docs`. The resulting files are located in `doc/doxygen/html`; open
`index.html` in that directory to view the homepage.
Before running `make docs`, you'll need to install these dependencies:
Linux: `sudo apt install doxygen graphviz`
MacOS: `brew install doxygen graphviz`
Development tips and tricks Development tips and tricks
--------------------------- ---------------------------