mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 02:33:24 -03:00
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:
parent
3ce8298888
commit
c902c4c0c6
1 changed files with 57 additions and 19 deletions
|
@ -9,6 +9,7 @@ Developer Notes
|
|||
- [Coding Style (C++)](#coding-style-c)
|
||||
- [Coding Style (Python)](#coding-style-python)
|
||||
- [Coding Style (Doxygen-compatible comments)](#coding-style-doxygen-compatible-comments)
|
||||
- [Generating Documentation](#generating-documentation)
|
||||
- [Development tips and tricks](#development-tips-and-tricks)
|
||||
- [Compiling for debugging](#compiling-for-debugging)
|
||||
- [Compiling for gprof profiling](#compiling-for-gprof-profiling)
|
||||
|
@ -34,6 +35,9 @@ Developer Notes
|
|||
- [Source code organization](#source-code-organization)
|
||||
- [GUI](#gui)
|
||||
- [Subtrees](#subtrees)
|
||||
- [Upgrading LevelDB](#upgrading-leveldb)
|
||||
- [File Descriptor Counts](#file-descriptor-counts)
|
||||
- [Consensus Compatibility](#consensus-compatibility)
|
||||
- [Scripted diffs](#scripted-diffs)
|
||||
- [Release notes](#release-notes)
|
||||
- [RPC interface guidelines](#rpc-interface-guidelines)
|
||||
|
@ -137,12 +141,17 @@ For example, to describe a function use:
|
|||
|
||||
```c++
|
||||
/**
|
||||
* ... text ...
|
||||
* @param[in] arg1 A description
|
||||
* @param[in] arg2 Another argument description
|
||||
* @pre Precondition for function...
|
||||
* ... Description ...
|
||||
*
|
||||
* @param[in] arg1 input description...
|
||||
* @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.
|
||||
|
@ -157,44 +166,73 @@ To describe a class, use the same construct above the class definition:
|
|||
* @see GetWarnings()
|
||||
*/
|
||||
class CAlert
|
||||
{
|
||||
```
|
||||
|
||||
To describe a member or variable use:
|
||||
```c++
|
||||
int var; //!< Detailed description after the member
|
||||
```
|
||||
|
||||
or
|
||||
```c++
|
||||
//! Description before the member
|
||||
int var;
|
||||
```
|
||||
|
||||
or
|
||||
```c++
|
||||
int var; //!< Description after the member
|
||||
```
|
||||
|
||||
Also OK:
|
||||
```c++
|
||||
///
|
||||
/// ... text ...
|
||||
/// ... Description ...
|
||||
///
|
||||
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++
|
||||
//
|
||||
// ... 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,
|
||||
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:
|
||||
```
|
||||
brew install graphviz doxygen
|
||||
```
|
||||
- Avoiding duplicating type and input/output information in function
|
||||
descriptions.
|
||||
|
||||
- Use backticks (``) 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
|
||||
---------------------------
|
||||
|
|
Loading…
Add table
Reference in a new issue