Updated Doxygen docs

This commit is contained in:
Bartek Kryza
2023-06-19 23:23:50 +02:00
parent 6dd4089c8d
commit fb348fbaa1
21 changed files with 2981 additions and 92 deletions

2
.gitignore vendored
View File

@@ -25,6 +25,8 @@ docs/diagrams
docs/doxygen/html docs/doxygen/html
docs/doxygen/xml docs/doxygen/xml
docs/doxygen/latex docs/doxygen/latex
docs/contributing.md
docs/changelog.md
coverage*.info coverage*.info

View File

@@ -1,8 +1,10 @@
# Contributing to `clang-uml` # Contributing to clang-uml
Thanks for taking interest in `clang-uml`! Thanks for taking interest in `clang-uml`!
> Please, make sure you're ok with [Code of conduct](./CODE_OF_CONDUCT.md) and [LICENSE](./LICENSE.md) > Please, make sure you're ok with
> [Code of conduct](./CODE_OF_CONDUCT.md)
> and [LICENSE](./LICENSE.md)
## If you found a bug ## If you found a bug
@@ -18,12 +20,12 @@ Thanks for taking interest in `clang-uml`!
the C++ code which triggers the issue, and in `tests/t00050/test_case.h` write the test checks. the C++ code which triggers the issue, and in `tests/t00050/test_case.h` write the test checks.
The test case must be also added manually to `tests/test_cases.cc`: The test case must be also added manually to `tests/test_cases.cc`:
```cpp ```cpp
... // ...
#include "t00047/test_case.h" #include "t00047/test_case.h"
#include "t00048/test_case.h" #include "t00048/test_case.h"
#include "t00049/test_case.h" #include "t00049/test_case.h"
#include "t00050/test_case.h" #include "t00050/test_case.h" // <<<
... // ...
``` ```
Finally, create an issue with a link to your branch with the new test case. Finally, create an issue with a link to your branch with the new test case.
@@ -82,8 +84,8 @@ Thanks for taking interest in `clang-uml`!
the feature to ensure we're on the same page as to its purpose and possible implementation the feature to ensure we're on the same page as to its purpose and possible implementation
* Next, implement the feature, please try to adapt to the overall code style: * Next, implement the feature, please try to adapt to the overall code style:
* 80-character line width * 80-character line width
* snakes over camels * snakes not camels
* use `make format` before submitting PR to ensure consistent formatting * use `make format` before submitting PR to ensure consistent formatting (requires Docker)
* use `make tidy` to check if your code doesn't introduce any `clang-tidy` warnings * use `make tidy` to check if your code doesn't introduce any `clang-tidy` warnings
* Add test case (or multiple test cases), which cover the new feature * Add test case (or multiple test cases), which cover the new feature
* Finally, create a pull request! * Finally, create a pull request!

View File

@@ -44,7 +44,7 @@ PROJECT_NUMBER = 0.3.7
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short. # quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = C++ UML diagram generator based on Clang PROJECT_BRIEF = C++ to UML diagram generator based on Clang
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included # With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55 # in the documentation. The maximum height of the logo should not exceed 55
@@ -781,7 +781,7 @@ FILE_VERSION_FILTER =
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty. # tag is left empty.
LAYOUT_FILE = LAYOUT_FILE = docs/doxygen/layout-clang-uml.xml
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing # The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib # the reference definitions. This must be a list of .bib files. The .bib
@@ -1013,7 +1013,9 @@ EXAMPLE_RECURSIVE = NO
# that contain images that are to be included in the documentation (see the # that contain images that are to be included in the documentation (see the
# \image command). # \image command).
IMAGE_PATH = docs/diagrams IMAGE_PATH = docs/img
IMAGE_PATH += docs/diagrams
IMAGE_PATH += docs/test_cases
# The INPUT_FILTER tag can be used to specify a program that doxygen should # The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program # invoke to filter for each input file. Doxygen will invoke the filter program
@@ -1305,9 +1307,9 @@ HTML_EXTRA_FILES = thirdparty/doxygen-awesome-css/doxygen-awesome-interact
HTML_EXTRA_FILES += thirdparty/doxygen-awesome-css/doxygen-awesome-paragraph-link.js HTML_EXTRA_FILES += thirdparty/doxygen-awesome-css/doxygen-awesome-paragraph-link.js
HTML_EXTRA_FILES += thirdparty/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js HTML_EXTRA_FILES += thirdparty/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js
HTML_EXTRA_FILES += thirdparty/doxygen-awesome-css/doxygen-awesome-tabs.js HTML_EXTRA_FILES += thirdparty/doxygen-awesome-css/doxygen-awesome-tabs.js
HTML_EXTRA_FILES += CONTRIBUTING.md
HTML_EXTRA_FILES += docs/doxygen/highlight.min.js HTML_EXTRA_FILES += docs/doxygen/highlight.min.js
HTML_EXTRA_FILES += docs/doxygen/solarized-light.min.css HTML_EXTRA_FILES += docs/doxygen/github.min.css
HTML_EXTRA_FILES += docs/img/github-mark.svg
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to # will adjust the colors in the style sheet and background images according to

View File

@@ -139,8 +139,10 @@ docs:
make -C docs toc make -C docs toc
.PHONY: doxygen .PHONY: doxygen
doxygen: doxygen: docs
doxygen cp CONTRIBUTING.md docs/contributing.md
cp CHANGELOG.md docs/changelog.md
../doxygen/_build/bin/doxygen
.PHONY: fedora/% .PHONY: fedora/%
fedora/%: fedora/%:

View File

@@ -9,15 +9,20 @@ legacy code. The configuration file or files for `clang-uml` define the
types and contents of each generated diagram. types and contents of each generated diagram.
The diagrams can be generated in [PlantUML](https://plantuml.com) and JSON formats. The diagrams can be generated in [PlantUML](https://plantuml.com) and JSON formats.
Example sequence diagram generated using `clang-uml` from [this code](https://github.com/bkryza/clang-uml/blob/master/tests/t20029/t20029.cc):
![Sample sequence diagram](test_cases/t20029_sequence.svg)
`clang-uml` currently supports C++ up to version 17 with partial support for C++ 20. `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 To see what `clang-uml` can do, checkout the diagrams generated for unit
test cases [here](./test_cases.md) or examples in test cases [here](./test_cases.md) or examples in
[clang-uml-examples](https://github.com/bkryza/clang-uml-examples) repository. [clang-uml-examples](https://github.com/bkryza/clang-uml-examples) repository.
These pages provide both user and developer documentation.
* [Quick start](./quick_start.md) * [Quick start](./quick_start.md)
* [Installation](./installation.md) * [Installation](./installation.md)
* Generating diagrams * **Generating diagrams**
* [Common options](./common_options.md) * [Common options](./common_options.md)
* [Generator types](./generator_types.md) * [Generator types](./generator_types.md)
* [Class diagrams](./class_diagrams.md) * [Class diagrams](./class_diagrams.md)
@@ -33,6 +38,8 @@ test cases [here](./test_cases.md) or examples in
* [Doxygen integration](./doxygen_integration.md) * [Doxygen integration](./doxygen_integration.md)
* [Test cases documentation](./test_cases.md) * [Test cases documentation](./test_cases.md)
* [Troubleshooting](./troubleshooting.md) * [Troubleshooting](./troubleshooting.md)
* Development * [Changelog](./changelog.md)
* [License](./license.md)
* **Development**
* [Architecture](./architecture.md) * [Architecture](./architecture.md)
* [Contributing](../CONTRIBUTING.md) * [Contributing](./contributing.md)

2
docs/architecture.md Normal file
View File

@@ -0,0 +1,2 @@
# Architecture

View File

@@ -2,10 +2,10 @@
<!-- toc --> <!-- toc -->
* [`note`](#note) * ['note'](#note)
* [`skip` and `skiprelationship`](#skip-and-skiprelationship) * ['skip' and 'skiprelationship'](#skip-and-skiprelationship)
* [`composition`, `association` and `aggregation`](#composition-association-and-aggregation) * ['composition', 'association' and 'aggregation'](#composition-association-and-aggregation)
* [`style`](#style) * ['style'](#style)
<!-- tocstop --> <!-- tocstop -->
@@ -27,7 +27,7 @@ The optional `:<diagram_name>` suffix will apply this decorator only to a specif
Currently, the following decorators are supported. Currently, the following decorators are supported.
## `note` ## 'note'
This decorator allows to specify directly in the code comments that should be included in the generated diagrams. This decorator allows to specify directly in the code comments that should be included in the generated diagrams.
@@ -91,7 +91,7 @@ generates the following class diagram:
![note](./test_cases/t00028_class.svg) ![note](./test_cases/t00028_class.svg)
## `skip` and `skiprelationship` ## 'skip' and 'skiprelationship'
This decorator allows to skip the specific classes or methods from the diagrams, for instance the following code: This decorator allows to skip the specific classes or methods from the diagrams, for instance the following code:
```cpp ```cpp
@@ -145,7 +145,7 @@ generates the following diagram:
![skip](./test_cases/t00029_class.svg) ![skip](./test_cases/t00029_class.svg)
## `composition`, `association` and `aggregation` ## 'composition', 'association' and 'aggregation'
These decorators allow to specify explicitly the type of relationship within a class diagram that should be These decorators allow to specify explicitly the type of relationship within a class diagram that should be
generated for a given class member. For instance the following code: generated for a given class member. For instance the following code:
@@ -190,7 +190,7 @@ generates the following diagram:
![skip](./test_cases/t00030_class.svg) ![skip](./test_cases/t00030_class.svg)
## `style` ## 'style'
This decorator allows to specify in the code specific styles for diagram elements, for instance: This decorator allows to specify in the code specific styles for diagram elements, for instance:
```cpp ```cpp

View File

@@ -7,9 +7,9 @@
* [PlantUML custom directives](#plantuml-custom-directives) * [PlantUML custom directives](#plantuml-custom-directives)
* [Adding debug information in the generated diagrams](#adding-debug-information-in-the-generated-diagrams) * [Adding debug information in the generated diagrams](#adding-debug-information-in-the-generated-diagrams)
* [Resolving include path and compiler flags issues](#resolving-include-path-and-compiler-flags-issues) * [Resolving include path and compiler flags issues](#resolving-include-path-and-compiler-flags-issues)
* [Use `--query-driver` command line option](#use---query-driver-command-line-option) * [Use '--query-driver' command line option](#use---query-driver-command-line-option)
* [Manually add and remove compile flags from the compilation database](#manually-add-and-remove-compile-flags-from-the-compilation-database) * [Manually add and remove compile flags from the compilation database](#manually-add-and-remove-compile-flags-from-the-compilation-database)
* [Using `CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES`](#using-cmake_cxx_implicit_include_directories) * [Using 'CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES'](#using-cmake_cxx_implicit_include_directories)
<!-- tocstop --> <!-- tocstop -->
@@ -18,14 +18,17 @@ By default, `clang-uml` will look for file `.clang-uml` in the projects director
from it. The file must be specified in YAML and it's overall structure is as follows: from it. The file must be specified in YAML and it's overall structure is as follows:
```yaml ```yaml
<common options for all diagrams> # common options for all diagrams
...
diagrams: diagrams:
<first diagram name>: first_diagram_name>:
type: [class|sequence|package|include] type: class|sequence|package|include
<diagram specific options> # diagram specific options
<second diagram name>: ...
type: [class|sequence|package|include] second_diagram_name:
<diagram specific options> type: class|sequence|package|include
# diagram specific options
...
... ...
``` ```
@@ -116,7 +119,7 @@ These errors can be overcome, by ensuring that the Clang parser has the correct
include paths to analyse your code base on the given platform. `clang-uml` include paths to analyse your code base on the given platform. `clang-uml`
provides several mechanisms to resolve this issue: provides several mechanisms to resolve this issue:
### Use `--query-driver` command line option ### Use '--query-driver' command line option
> This option is not available on Windows. > This option is not available on Windows.
@@ -133,7 +136,7 @@ system, when generating diagrams for an embedded project and providing
`arm-none-eabi-gcc` as driver: `arm-none-eabi-gcc` as driver:
```bash ```bash
$ clang-uml --query-driver arm-none-eabi-gcc clang-uml --query-driver arm-none-eabi-gcc
``` ```
the following options are appended to each command line after `argv[0]` of the the following options are appended to each command line after `argv[0]` of the
@@ -148,7 +151,7 @@ already as `argv[0]` in your `compile_commands.json`, you can simply invoke
`clang-uml` as: `clang-uml` as:
```bash ```bash
$ clang-uml --query-driver . clang-uml --query-driver .
``` ```
however please make sure that the `compile_commands.json` contain a command, however please make sure that the `compile_commands.json` contain a command,
@@ -173,11 +176,11 @@ remove_compile_flags:
These options can be also passed on the command line, for instance: These options can be also passed on the command line, for instance:
```bash ```bash
$ clang-uml --add-compile-flag -I/opt/my_toolchain/include \ clang-uml --add-compile-flag -I/opt/my_toolchain/include \
--remove-compile-flag -I/usr/include ... --remove-compile-flag -I/usr/include ...
``` ```
### Using `CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES` ### Using 'CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES'
Yet another option, for CMake based projects, is to use the following CMake option: Yet another option, for CMake based projects, is to use the following CMake option:
```cmake ```cmake

View File

@@ -88,7 +88,7 @@ clang-uml --show-template parents_hierarchy_tmpl
users configuration file defines another template with a name which already users configuration file defines another template with a name which already
exists as built-in template it will override the predefined templates. exists as built-in template it will override the predefined templates.
Currently the following templates are built-in: Currently, the following templates are built-in:
* `parents_hierarchy_tmpl` - generate inheritance hierarchy diagram including * `parents_hierarchy_tmpl` - generate inheritance hierarchy diagram including
parents of a specified class parents of a specified class
* `subclass_hierarchy_tmpl` - generate inheritance hierarchy diagram including * `subclass_hierarchy_tmpl` - generate inheritance hierarchy diagram including

7
docs/doxygen/github.min.css vendored Normal file
View File

@@ -0,0 +1,7 @@
/*!
Theme: Github
Author: Defman21
License: ~ MIT (or more permissive) [via base16-schemes-source]
Maintainer: @highlightjs/core-team
Version: 2021.09.0
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#333;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c8c8fa;color:#333}.hljs-comment{color:#969896}.hljs-tag{color:#e8e8e8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#333}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ed6a43}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#0086b3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#795da3}.hljs-strong{font-weight:700;color:#795da3}.hljs-addition,.hljs-built_in,.hljs-code,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-string,.hljs-title.class_.inherited__{color:#183691}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#795da3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a71d5d}.hljs-emphasis{color:#a71d5d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#333}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}

View File

@@ -9,7 +9,7 @@
<!-- BEGIN opengraph metadata --> <!-- BEGIN opengraph metadata -->
<meta property="og:title" content="clang-uml" /> <meta property="og:title" content="clang-uml" />
<meta property="og:image" content="$relpath^clang-uml-logo.svg" /> <meta property="og:image" content="$relpath^clang-uml-logo.svg" />
<meta property="og:description" content="C++ UML diagram generator based on Clang." /> <meta property="og:description" content="C++ to UML diagram generator based on Clang." />
<meta property="og:url" content="https://clang-uml.github.io/" /> <meta property="og:url" content="https://clang-uml.github.io/" />
<!-- END opengraph metadata --> <!-- END opengraph metadata -->
@@ -22,31 +22,35 @@
<!--<script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>--> <!--<script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>-->
<script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script> <script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-paragraph-link.js"></script> <script type="text/javascript" src="$relpath^doxygen-awesome-paragraph-link.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-interactive-toc.js"></script> <!--<script type="text/javascript" src="$relpath^doxygen-awesome-interactive-toc.js"></script>-->
<script type="text/javascript" src="$relpath^doxygen-awesome-tabs.js"></script> <!--<script type="text/javascript" src="$relpath^doxygen-awesome-tabs.js"></script>-->
<script type="text/javascript" src="$relpath^toggle-alternative-theme.js"></script> <!--<script type="text/javascript" src="$relpath^toggle-alternative-theme.js"></script>-->
<script type="text/javascript"> <script type="text/javascript">
DoxygenAwesomeFragmentCopyButton.init() DoxygenAwesomeFragmentCopyButton.init()
// DoxygenAwesomeDarkModeToggle.init() // DoxygenAwesomeDarkModeToggle.init()
DoxygenAwesomeParagraphLink.init() DoxygenAwesomeParagraphLink.init()
DoxygenAwesomeInteractiveToc.init() // DoxygenAwesomeInteractiveToc.init()
DoxygenAwesomeTabs.init() // DoxygenAwesomeTabs.init()
</script> </script>
$treeview $treeview
$search $search
$mathjax $mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" /> <link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="$relpath^solarized-light.min.css"> <link rel="stylesheet" href="$relpath^github.min.css">
<script src="$relpath^highlight.min.js"></script> <script src="$relpath^highlight.min.js"></script>
<script> <script>
$(function() { $(function() {
hljs.configure({useBR: false});
$(".fragment").each(function(i,node) { $(".fragment").each(function(i,node) {
var $node = $(node); var $node = $(node);
// Only apply highlight.js to non-cpp code blocks
if (!$node.hasClass("language-cpp")) {
$node.html("<pre><code class='" + $node.html("<pre><code class='" +
$node.attr("class") + "'>" + $node.attr("class") + "'>" +
$node.text() + "</code></pre>"); $node.text() + "</code></pre>");
hljs.highlightElement(node); hljs.highlightElement(node);
}
}); });
}); });
</script> </script>
@@ -59,29 +63,38 @@ $extrastylesheet
<!-- <svg viewBox="0 0 250 250" width="70" height="70" style="position: absolute; top: 0; border: 0; right: 0; z-index: 99;" aria-hidden="true">--> <!-- <svg viewBox="0 0 250 250" width="70" height="70" style="position: absolute; top: 0; border: 0; right: 0; z-index: 99;" aria-hidden="true">-->
<!-- <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>--> <!-- <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>-->
<div id="top" style="background-color: gainsboro"><!-- do not remove this div, it is closed by doxygen! -->
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!--BEGIN TITLEAREA--> <!--BEGIN TITLEAREA-->
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<!--BEGIN PROJECT_LOGO--> <!--BEGIN PROJECT_LOGO-->
<td id="projectlogo"><a href="$relpath^index.html"><img alt="Main page" src="$relpath^$projectlogo"/></a></td> <td id="projectlogo">
<a href="$relpath^index.html">
<img alt="Main page" src="$relpath^$projectlogo"/>
</a>
</td>
<!--END PROJECT_LOGO--> <!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME--> <!--BEGIN PROJECT_NAME-->
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">$projectname <div id="projectname">
<!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span>
</div> </div>
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF--> <div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
</td> </td>
<!--END PROJECT_NAME--> <!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--> <!--BEGIN !PROJECT_NAME-->
<!--BEGIN PROJECT_BRIEF--> <!--BEGIN PROJECT_BRIEF-->
<td style="padding-left: 0.5em;"> <!-- <td style="padding-left: 0.5em;">-->
<div id="projectbrief">$projectbrief</div> <!-- <div id="projectbrief">$projectbrief</div>-->
<!-- </td>-->
<td>
<div>
<a href="https://github.com/bkryza/clang-uml">
<img alt="GitHub" src="$relpath^github-mark.svg"/>
</a>
</div>
</td> </td>
<!--END PROJECT_BRIEF--> <!--END PROJECT_BRIEF-->
<!--END !PROJECT_NAME--> <!--END !PROJECT_NAME-->

2575
docs/doxygen/highlight.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,245 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.9.7 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<!-- <tab type="mainpage" visible="yes" title=""/>-->
<!-- <tab type="pages" visible="yes" title="" intro=""/>-->
<!-- <tab type="modules" visible="yes" title="" intro=""/>-->
<tab type="user" url="./md_docs_2installation.html" title="Installation"/>
<tab type="user" url="./md_docs_2test__cases.html" title="Test cases"/>
<tab type="namespaces" visible="yes" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<!-- <tab type="concepts" visible="yes" title="">-->
<!-- </tab>-->
<!-- <tab type="interfaces" visible="yes" title="">-->
<!-- <tab type="interfacelist" visible="yes" title="" intro=""/>-->
<!-- <tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>-->
<!-- <tab type="interfacehierarchy" visible="yes" title="" intro=""/>-->
<!-- </tab>-->
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="structs" visible="yes" title="">
<tab type="structlist" visible="yes" title="" intro=""/>
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
</tab>
<tab type="exceptions" visible="yes" title="">
<tab type="exceptionlist" visible="yes" title="" intro=""/>
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="user" url="https://github.com/bkryza/clang-uml" title="GitHub"/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_HEADERFILE"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<concepts visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a concept page -->
<concept>
<briefdescription visible="yes"/>
<includes visible="$SHOW_HEADERFILE"/>
<definition visible="yes" title=""/>
<detaileddescription title=""/>
<authorsection visible="yes"/>
</concept>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<concepts visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<concepts visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

View File

@@ -9,6 +9,15 @@
Currently, there are 2 types of diagram generators: `plantuml` and `json`. Currently, there are 2 types of diagram generators: `plantuml` and `json`.
To specify, which generators should be used on the command line use option `-g`.
For instance to generate both types of diagrams run `clang-uml` as follows:
```bash
clang-uml -g plantuml -g json
```
By default only `plantuml` diagram are generated.
## PlantUML ## PlantUML
Generates UML diagrams in textual PlantUML format, which can then Generates UML diagrams in textual PlantUML format, which can then

1
docs/img/github-mark.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#24292f"/></svg>

After

Width:  |  Height:  |  Size: 963 B

View File

@@ -2,7 +2,7 @@
<!-- toc --> <!-- toc -->
* [Tracking system headers directly included by projects files](#tracking-system-headers-directly-included-by-projects-files) * [Tracking system headers directly included by project sources](#tracking-system-headers-directly-included-by-project-sources)
<!-- tocstop --> <!-- tocstop -->
@@ -46,7 +46,7 @@ The following table presents the PlantUML arrows representing relationships in t
| Include (local) | ![association](img/puml_association.png) | | Include (local) | ![association](img/puml_association.png) |
| Include (system) | ![dependency](img/puml_dependency.png) | | Include (system) | ![dependency](img/puml_dependency.png) |
## Tracking system headers directly included by projects files ## Tracking system headers directly included by project sources
In case you would like to include the information about what system headers your projects file include simply add In case you would like to include the information about what system headers your projects file include simply add
the following option to the diagram: the following option to the diagram:

View File

@@ -3,8 +3,8 @@
<!-- toc --> <!-- toc -->
* [Accessing comment content](#accessing-comment-content) * [Accessing comment content](#accessing-comment-content)
* [`plain` comment parser](#plain-comment-parser) * ['plain' comment parser](#plain-comment-parser)
* [`clang` comment parser](#clang-comment-parser) * ['clang' comment parser](#clang-comment-parser)
<!-- tocstop --> <!-- tocstop -->
@@ -102,12 +102,12 @@ Currently there are 2 available comment parsers:
They can be selected using `comment_parser` config option. They can be selected using `comment_parser` config option.
#### `plain` comment parser #### 'plain' comment parser
This parser provides only 2 options to the Jinja context: This parser provides only 2 options to the Jinja context:
* `comment.raw` - raw comment text, including comment markers such as `///` or `/**` * `comment.raw` - raw comment text, including comment markers such as `///` or `/**`
* `comment.formatted` - formatted entire comment * `comment.formatted` - formatted entire comment
#### `clang` comment parser #### 'clang' comment parser
This parser uses Clang comment parsing API to extract commands from the command: This parser uses Clang comment parsing API to extract commands from the command:
* `comment.raw` - raw comment text, including comment markers such as `///` or `/**` * `comment.raw` - raw comment text, including comment markers such as `///` or `/**`
* `comment.formatted` - formatted entire comment * `comment.formatted` - formatted entire comment

15
docs/license.md Normal file
View File

@@ -0,0 +1,15 @@
## LICENSE
Copyright 2021-present Bartek Kryza <bkryza@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -10,7 +10,7 @@ To add an initial class diagram to your project, follow these steps:
1. Enter your projects top level directory and run: 1. Enter your projects top level directory and run:
```bash ```bash
$ clang-uml --init clang-uml --init
``` ```
2. Edit the generated `.clang-uml` file and set the following: 2. Edit the generated `.clang-uml` file and set the following:
```yaml ```yaml
@@ -39,21 +39,21 @@ To add an initial class diagram to your project, follow these steps:
``` ```
3. Run `clang-uml` in the projects top directory: 3. Run `clang-uml` in the projects top directory:
```bash ```bash
$ clang-uml clang-uml
# or to see generation progress for each diagram run # or to see generation progress for each diagram run
$ clang-uml --progress clang-uml --progress
``` ```
4. Generate SVG images from the PlantUML diagrams: 4. Generate SVG images from the PlantUML diagrams:
```bash ```bash
$ plantuml -tsvg puml/*.puml plantuml -tsvg puml/*.puml
``` ```
5. Add another diagram: 5. Add another diagram:
```bash ```bash
$ clang-uml --add-sequence-diagram another_diagram clang-uml --add-sequence-diagram another_diagram
``` ```
6. Now list the diagrams defined in the config: 6. Now list the diagrams defined in the config:
```bash ```bash
$ clang-uml -l clang-uml -l
The following diagrams are defined in the config file: The following diagrams are defined in the config file:
- another_diagram [sequence] - another_diagram [sequence]
- some_class_diagram [class] - some_class_diagram [class]

View File

@@ -89,9 +89,11 @@ Then you just need to copy and paste the signature exactly and rerun `clang-uml`
By default, `clang-uml` will generate a new participant for each call to a free function (not method), which can lead By default, `clang-uml` will generate a new participant for each call to a free function (not method), which can lead
to a very large number of participants in the diagram. If it's an issue, an option can be provided in the diagram to a very large number of participants in the diagram. If it's an issue, an option can be provided in the diagram
definition: definition:
```yaml ```yaml
combine_free_functions_into_file_participants: true combine_free_functions_into_file_participants: true
``` ```
which will aggregate free functions per source file where they were declared thus minimizing the which will aggregate free functions per source file where they were declared thus minimizing the
diagram size. An example of such diagram is presented below: diagram size. An example of such diagram is presented below:
@@ -109,6 +111,7 @@ following rules:
Another issue is the naming of lambda participants. Currently, each lambda is rendered in the diagram as a separate Another issue is the naming of lambda participants. Currently, each lambda is rendered in the diagram as a separate
class whose name is composed of the lambda location in the code (the only unique way of identifying lambdas I was able class whose name is composed of the lambda location in the code (the only unique way of identifying lambdas I was able
to find). For example the following code: to find). For example the following code:
```cpp ```cpp
#include <algorithm> #include <algorithm>
#include <functional> #include <functional>

View File

@@ -3,16 +3,16 @@
<!-- toc --> <!-- toc -->
* [General issues](#general-issues) * [General issues](#general-issues)
* [`clang-uml` crashed when generating diagram](#clang-uml-crashed-when-generating-diagram) * [clang-uml crashes when generating diagram](#clang-uml-crashes-when-generating-diagram)
* [Diagram generation is very slow](#diagram-generation-is-very-slow) * [Diagram generation is very slow](#diagram-generation-is-very-slow)
* [Diagram generated with PlantUML is cropped](#diagram-generated-with-plantuml-is-cropped) * [Diagram generated with PlantUML is cropped](#diagram-generated-with-plantuml-is-cropped)
* [`clang` produces several warnings during diagram generation](#clang-produces-several-warnings-during-diagram-generation) * [Clang produces several warnings during diagram generation](#clang-produces-several-warnings-during-diagram-generation)
* [Cannot generate diagrams from header-only projects](#cannot-generate-diagrams-from-header-only-projects) * [Cannot generate diagrams from header-only projects](#cannot-generate-diagrams-from-header-only-projects)
* [YAML anchors and aliases are not fully supported](#yaml-anchors-and-aliases-are-not-fully-supported) * [YAML anchors and aliases are not fully supported](#yaml-anchors-and-aliases-are-not-fully-supported)
* [Class diagrams](#class-diagrams) * [Class diagrams](#class-diagrams)
* ["fatal error: 'stddef.h' file not found"](#fatal-error-stddefh-file-not-found) * ["fatal error: 'stddef.h' file not found"](#fatal-error-stddefh-file-not-found)
* [How can I generate class diagram of my entire project](#how-can-i-generate-class-diagram-of-my-entire-project) * [How can I generate class diagram of my entire project](#how-can-i-generate-class-diagram-of-my-entire-project)
* [Cannot generate classes for `std` namespace](#cannot-generate-classes-for-std-namespace) * [Cannot generate classes for 'std' namespace](#cannot-generate-classes-for-std-namespace)
* [Sequence diagrams](#sequence-diagrams) * [Sequence diagrams](#sequence-diagrams)
* [Generated diagram is empty](#generated-diagram-is-empty) * [Generated diagram is empty](#generated-diagram-is-empty)
* [Generated diagram contains several empty control blocks or calls which should not be there](#generated-diagram-contains-several-empty-control-blocks-or-calls-which-should-not-be-there) * [Generated diagram contains several empty control blocks or calls which should not be there](#generated-diagram-contains-several-empty-control-blocks-or-calls-which-should-not-be-there)
@@ -21,14 +21,14 @@
## General issues ## General issues
### `clang-uml` crashed when generating diagram ### clang-uml crashes when generating diagram
If `clang-uml` crashes with a segmentation fault, it is possible to trace the If `clang-uml` crashes with a segmentation fault, it is possible to trace the
exact stack trace of the fault using the following steps: exact stack trace of the fault using the following steps:
First, build `clang-uml` from source in debug mode, e.g.: First, build `clang-uml` from source in debug mode, e.g.:
```bash ```bash
$ make debug make debug
``` ```
Then run `clang-uml`, preferably with `-vvv` for verbose log output. If your Then run `clang-uml`, preferably with `-vvv` for verbose log output. If your
@@ -36,7 +36,7 @@ Then run `clang-uml`, preferably with `-vvv` for verbose log output. If your
a single diagram to make it easier to trace the root cause of the crash, e.g.: a single diagram to make it easier to trace the root cause of the crash, e.g.:
```bash ```bash
$ debug/src/clang-uml -vvv -n my_diagram debug/src/clang-uml -vvv -n my_diagram
``` ```
After `clang-uml` crashes again, detailed backtrace (generated using After `clang-uml` crashes again, detailed backtrace (generated using
@@ -96,11 +96,11 @@ format and then convert
to PNG, e.g.: to PNG, e.g.:
```bash ```bash
$ plantuml -tsvg mydiagram.puml plantuml -tsvg mydiagram.puml
$ convert +antialias mydiagram.svg mydiagram.png convert +antialias mydiagram.svg mydiagram.png
``` ```
### `clang` produces several warnings during diagram generation ### Clang produces several warnings during diagram generation
During the generation of the diagram `clang` may report a lot of warnings, which During the generation of the diagram `clang` may report a lot of warnings, which
do not occur during the compilation with other compiler (e.g. GCC). This can be do not occur during the compilation with other compiler (e.g. GCC). This can be
@@ -123,7 +123,7 @@ add_compile_flags:
Alternatively, the same can be passed through the `clang-uml` command line, e.g. Alternatively, the same can be passed through the `clang-uml` command line, e.g.
```bash ```bash
$ clang-uml --add-compile-flag -Wno-implicit-const-int-float-conversion \ clang-uml --add-compile-flag -Wno-implicit-const-int-float-conversion \
--add-compile-flag -Wno-shadow ... --add-compile-flag -Wno-shadow ...
``` ```
@@ -219,7 +219,7 @@ will be added to each compile command in the database. This is especially useful
on macOS as well as for embedded toolchains, example usage: on macOS as well as for embedded toolchains, example usage:
```bash ```bash
$ clang-uml --query-driver arm-none-eabi-g++ clang-uml --query-driver arm-none-eabi-g++
``` ```
Another option is to make sure that the Clang is installed on the system (even Another option is to make sure that the Clang is installed on the system (even
@@ -249,7 +249,7 @@ remove_compile_flags:
These options can be also passed on the command line, for instance: These options can be also passed on the command line, for instance:
```bash ```bash
$ clang-uml --add-compile-flag -I/opt/my_toolchain/include \ clang-uml --add-compile-flag -I/opt/my_toolchain/include \
--remove-compile-flag -I/usr/include ... --remove-compile-flag -I/usr/include ...
``` ```
@@ -273,10 +273,10 @@ be readable. However, this option can be useful for cases when we want to get
a complete JSON model of the codebase using the JSON generator: a complete JSON model of the codebase using the JSON generator:
```bash ```bash
$ clang-uml -g json -n all_classes --progress clang-uml -g json -n all_classes --progress
``` ```
### Cannot generate classes for `std` namespace ### Cannot generate classes for 'std' namespace
Currently, system headers are skipped automatically by `clang-uml`, due to Currently, system headers are skipped automatically by `clang-uml`, due to
too many errors they produce when generating diagrams, especially when trying too many errors they produce when generating diagrams, especially when trying
to process `GCC`'s or `MSVC`'s system headers by `Clang` - not yet sure why to process `GCC`'s or `MSVC`'s system headers by `Clang` - not yet sure why
@@ -302,6 +302,7 @@ exclude:
Hopefully this will be eventually resolved. Hopefully this will be eventually resolved.
## Sequence diagrams ## Sequence diagrams
### Generated diagram is empty ### Generated diagram is empty
In order to generate sequence diagram the `start_from` configuration option must In order to generate sequence diagram the `start_from` configuration option must