Added initial Doxygen config

This commit is contained in:
Bartek Kryza
2023-06-18 01:18:14 +02:00
parent 031235bf49
commit da2cb63ab3
51 changed files with 4330 additions and 158 deletions

View File

@@ -1,5 +1,20 @@
@mainpage clang-uml
# Documentation
`clang-uml` is an automatic C++ to UML class, sequence, package and include diagram generator, driven by
YAML configuration files. The main idea behind the
project is to easily maintain up-to-date diagrams within a code-base or document
legacy code. The configuration file or files for `clang-uml` define the
types and contents of each generated diagram.
The diagrams can be generated in [PlantUML](https://plantuml.com) and JSON formats.
`clang-uml` currently supports C++ up to version 17 with partial support for C++ 20.
To see what `clang-uml` can do, checkout the diagrams generated for unit
test cases [here](./test_cases.md) or examples in
[clang-uml-examples](https://github.com/bkryza/clang-uml-examples) repository.
* [Quick start](./quick_start.md)
* [Installation](./installation.md)
* Generating diagrams
@@ -18,3 +33,6 @@
* [Doxygen integration](./doxygen_integration.md)
* [Test cases documentation](./test_cases.md)
* [Troubleshooting](./troubleshooting.md)
* Development
* [Architecture](./architecture.md)
* [Contributing](../CONTRIBUTING.md)

View File

@@ -2,18 +2,18 @@
<!-- toc -->
* [`namespaces` _[string or regex]_](#namespaces-_string-or-regex_)
* [`elements` _[string or regex]_](#elements-_string-or-regex_)
* [`element_types`](#element_types)
* [`paths` _[string or glob]_](#paths-_string-or-glob_)
* [`context` _[string or regex]_](#context-_string-or-regex_)
* [`relationships`](#relationships)
* [`subclasses` _[string or regex]_](#subclasses-_string-or-regex_)
* [`parents` _[string or regex]_](#parents-_string-or-regex_)
* [`specializations` _[string or regex]_](#specializations-_string-or-regex_)
* [`access`](#access)
* [`method_types`](#method_types)
* [`dependants` and `dependencies` _[string or regex]_](#dependants-and-dependencies-_string-or-regex_)
* [namespaces](#namespaces)
* [elements](#elements)
* [element_types](#element_types)
* [paths](#paths)
* [context](#context)
* [relationships](#relationships)
* [subclasses](#subclasses)
* [parents](#parents)
* [specializations](#specializations)
* [access](#access)
* [method_types](#method_types)
* [dependants and dependencies](#dependants-and-dependencies)
<!-- tocstop -->
@@ -55,29 +55,29 @@ exclude:
The following table specifies the values allowed in each filter:
| Filter name | Possible values | Example values |
|-------------------|----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| `namespaces` | Qualified name or regex | - `ns1::ns2::ClassA` <br/>- `r: '.*detail.*'` |
| `elements` | Qualified name or regex | - `ns1::ns2::ClassA` <br/>- `r: '.*detail.*'` |
| `element_types` | Types of diagram elements | - `class`<br/>- `enum`<br/>- `concept` |
| `paths` | File or dir path or glob pattern | - `src/dir1`<br/>- `src/dir2/a.cpp`<br/>- `src/dir3/*.cpp` |
| `context` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `relationships` | Type of relationship | - `inheritance`<br/>- `composition`<br/>- `aggregation`<br/>- `ownership`<br/>- `association`<br/>- `instantiation`<br/>- `friendship`<br/>- `dependency` |
| `subclasses` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `parents` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `specializations` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `access` | Method or member access scope | - `public`<br/>- `protected`<br/>- `private` |
| `method_types` | Type of class method | - `constructor`<br/>- `destructor`<br/>- `assignment`<br/>- `operator`<br/>- `defaulted`<br/>- `deleted`<br/>- `static` |
| `dependants` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `dependencies` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| Filter name | Possible values | Example values |
|-------------------|----------------------------------|------------------------------------------------------------------------------------------------------------------------|
| `namespaces` | Qualified name or regex | `ns1::ns2::ClassA`, `r: '.*detail.*'` |
| `elements` | Qualified name or regex | `ns1::ns2::ClassA`,`r: '.*detail.*'` |
| `element_types` | Types of diagram elements | `class`, `enum`, `concept` |
| `paths` | File or dir path or glob pattern | `src/dir1`, `src/dir2/a.cpp`, `src/dir3/*.cpp` |
| `context` | Qualified name or regex | `ns1::ns2::ClassA`, `r: 'ns1::ns2::ClassA.+'` |
| `relationships` | Type of relationship | `inheritance`, `composition`, `aggregation`, `ownership`, `association`, `instantiation`, `friendship`, `dependency` |
| `subclasses` | Qualified name or regex | `ns1::ns2::ClassA`, `r: 'ns1::ns2::ClassA.+'` |
| `parents` | Qualified name or regex | `ns1::ns2::ClassA`, `r: 'ns1::ns2::ClassA.+'` |
| `specializations` | Qualified name or regex | `ns1::ns2::ClassA`, `r: 'ns1::ns2::ClassA.+'` |
| `access` | Method or member access scope | `public`, `protected`, `private` |
| `method_types` | Type of class method | `constructor`, `destructor`, `assignment`, `operator`, `defaulted`, `deleted`, `static` |
| `dependants` | Qualified name or regex | `ns1::ns2::ClassA`, `r: 'ns1::ns2::ClassA.+'` |
| `dependencies` | Qualified name or regex | `ns1::ns2::ClassA`, `r: 'ns1::ns2::ClassA.+'` |
The following filters are available.
## `namespaces` _[string or regex]_
## namespaces
Allows to include or exclude entities from specific namespaces.
## `elements` _[string or regex]_
## elements
Allows to directly include or exclude specific entities from the diagrams, for instance to exclude a specific class
from an included namespace:
@@ -91,7 +91,7 @@ from an included namespace:
- ns1::ns2::MyClass
```
## `element_types`
## element_types
Allows to include or exclude elements of specific type from the diagram, for instance
to remove all enums from a diagram add the following:
@@ -102,7 +102,7 @@ to remove all enums from a diagram add the following:
- enum
```
## `paths` _[string or glob]_
## paths
This filter allows to include or exclude from the diagram elements declared
in specific files.
@@ -122,7 +122,7 @@ diagrams:
Currently, this filter does not allow any globbing or wildcards, however
paths to directories can be specified.
## `context` _[string or regex]_
## context
This filter allows to limit the diagram elements only to classes which are in direct relationship (of any kind) with
the specified class:
@@ -134,7 +134,7 @@ the specified class:
```
## `relationships`
## relationships
This filter allows to include or exclude specific types of relationships from the diagram, for instance to only
include inheritance and template specialization/instantiation relationships add the following to the diagram:
@@ -156,19 +156,19 @@ The following relationships can be used in this filter:
* friendship
* dependency
## `subclasses` _[string or regex]_
## subclasses
This filter allows to include or exclude all subclasses of a given class in the diagram.
## `parents` _[string or regex]_
## parents
This filter allows to include or exclude all parents (base classes) of a given class in the diagram.
## `specializations` _[string or regex]_
## specializations
This filter allows to include or exclude specializations and instantiations of a specific template from the diagram.
## `access`
## access
This filter allows to include or exclude class methods and members based on their access scope, allowed values ar:
@@ -176,7 +176,7 @@ This filter allows to include or exclude class methods and members based on thei
* `protected`
* `private`
## `method_types`
## method_types
This filter allows to include or exclude various method types from the class diagram, allowed values ar:
* constructor
@@ -190,7 +190,7 @@ This filter allows to include or exclude various method types from the class dia
This filter is independent of the `access` filter, which controls which methods
are included based on access scope (e.g. `public`).
## `dependants` and `dependencies` _[string or regex]_
## dependants and dependencies
These filters allow to specify that only dependants or dependencies of a given class should be included in the diagram.
This can be useful for analyzing what classes in your project depend on some other class, which could have impact for