Updated Doxygen docs
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -25,6 +25,8 @@ docs/diagrams
|
||||
docs/doxygen/html
|
||||
docs/doxygen/xml
|
||||
docs/doxygen/latex
|
||||
docs/contributing.md
|
||||
docs/changelog.md
|
||||
|
||||
coverage*.info
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# Contributing to `clang-uml`
|
||||
# Contributing to 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
|
||||
@@ -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 test case must be also added manually to `tests/test_cases.cc`:
|
||||
```cpp
|
||||
...
|
||||
// ...
|
||||
#include "t00047/test_case.h"
|
||||
#include "t00048/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.
|
||||
@@ -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
|
||||
* Next, implement the feature, please try to adapt to the overall code style:
|
||||
* 80-character line width
|
||||
* snakes over camels
|
||||
* use `make format` before submitting PR to ensure consistent formatting
|
||||
* snakes not camels
|
||||
* 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
|
||||
* Add test case (or multiple test cases), which cover the new feature
|
||||
* Finally, create a pull request!
|
||||
|
||||
12
Doxyfile
12
Doxyfile
@@ -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
|
||||
# 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
|
||||
# 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
|
||||
# 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 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
|
||||
# \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
|
||||
# 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-fragment-copy-button.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/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
|
||||
# will adjust the colors in the style sheet and background images according to
|
||||
|
||||
6
Makefile
6
Makefile
@@ -139,8 +139,10 @@ docs:
|
||||
make -C docs toc
|
||||
|
||||
.PHONY: doxygen
|
||||
doxygen:
|
||||
doxygen
|
||||
doxygen: docs
|
||||
cp CONTRIBUTING.md docs/contributing.md
|
||||
cp CHANGELOG.md docs/changelog.md
|
||||
../doxygen/_build/bin/doxygen
|
||||
|
||||
.PHONY: fedora/%
|
||||
fedora/%:
|
||||
|
||||
@@ -9,15 +9,20 @@ 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.
|
||||
|
||||
Example sequence diagram generated using `clang-uml` from [this code](https://github.com/bkryza/clang-uml/blob/master/tests/t20029/t20029.cc):
|
||||

|
||||
|
||||
`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.
|
||||
|
||||
These pages provide both user and developer documentation.
|
||||
|
||||
* [Quick start](./quick_start.md)
|
||||
* [Installation](./installation.md)
|
||||
* Generating diagrams
|
||||
* **Generating diagrams**
|
||||
* [Common options](./common_options.md)
|
||||
* [Generator types](./generator_types.md)
|
||||
* [Class diagrams](./class_diagrams.md)
|
||||
@@ -33,6 +38,8 @@ test cases [here](./test_cases.md) or examples in
|
||||
* [Doxygen integration](./doxygen_integration.md)
|
||||
* [Test cases documentation](./test_cases.md)
|
||||
* [Troubleshooting](./troubleshooting.md)
|
||||
* Development
|
||||
* [Changelog](./changelog.md)
|
||||
* [License](./license.md)
|
||||
* **Development**
|
||||
* [Architecture](./architecture.md)
|
||||
* [Contributing](../CONTRIBUTING.md)
|
||||
* [Contributing](./contributing.md)
|
||||
|
||||
2
docs/architecture.md
Normal file
2
docs/architecture.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# Architecture
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
<!-- toc -->
|
||||
|
||||
* [`note`](#note)
|
||||
* [`skip` and `skiprelationship`](#skip-and-skiprelationship)
|
||||
* [`composition`, `association` and `aggregation`](#composition-association-and-aggregation)
|
||||
* [`style`](#style)
|
||||
* ['note'](#note)
|
||||
* ['skip' and 'skiprelationship'](#skip-and-skiprelationship)
|
||||
* ['composition', 'association' and 'aggregation'](#composition-association-and-aggregation)
|
||||
* ['style'](#style)
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
@@ -27,7 +27,7 @@ The optional `:<diagram_name>` suffix will apply this decorator only to a specif
|
||||
|
||||
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.
|
||||
|
||||
@@ -91,7 +91,7 @@ generates the following class diagram:
|
||||
|
||||

|
||||
|
||||
## `skip` and `skiprelationship`
|
||||
## 'skip' and 'skiprelationship'
|
||||
This decorator allows to skip the specific classes or methods from the diagrams, for instance the following code:
|
||||
```cpp
|
||||
|
||||
@@ -145,7 +145,7 @@ generates the following diagram:
|
||||
|
||||

|
||||
|
||||
## `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
|
||||
generated for a given class member. For instance the following code:
|
||||
@@ -190,7 +190,7 @@ generates the following diagram:
|
||||

|
||||
|
||||
|
||||
## `style`
|
||||
## 'style'
|
||||
This decorator allows to specify in the code specific styles for diagram elements, for instance:
|
||||
|
||||
```cpp
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
* [PlantUML custom directives](#plantuml-custom-directives)
|
||||
* [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)
|
||||
* [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)
|
||||
* [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 -->
|
||||
|
||||
@@ -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:
|
||||
|
||||
```yaml
|
||||
<common options for all diagrams>
|
||||
# common options for all diagrams
|
||||
...
|
||||
diagrams:
|
||||
<first diagram name>:
|
||||
type: [class|sequence|package|include]
|
||||
<diagram specific options>
|
||||
<second diagram name>:
|
||||
type: [class|sequence|package|include]
|
||||
<diagram specific options>
|
||||
first_diagram_name>:
|
||||
type: class|sequence|package|include
|
||||
# diagram specific options
|
||||
...
|
||||
second_diagram_name:
|
||||
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`
|
||||
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.
|
||||
|
||||
@@ -133,7 +136,7 @@ system, when generating diagrams for an embedded project and providing
|
||||
`arm-none-eabi-gcc` as driver:
|
||||
|
||||
```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
|
||||
@@ -148,7 +151,7 @@ already as `argv[0]` in your `compile_commands.json`, you can simply invoke
|
||||
`clang-uml` as:
|
||||
|
||||
```bash
|
||||
$ clang-uml --query-driver .
|
||||
clang-uml --query-driver .
|
||||
```
|
||||
|
||||
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:
|
||||
|
||||
```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 ...
|
||||
```
|
||||
|
||||
### 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:
|
||||
|
||||
```cmake
|
||||
|
||||
@@ -88,7 +88,7 @@ clang-uml --show-template parents_hierarchy_tmpl
|
||||
users configuration file defines another template with a name which already
|
||||
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 of a specified class
|
||||
* `subclass_hierarchy_tmpl` - generate inheritance hierarchy diagram including
|
||||
|
||||
7
docs/doxygen/github.min.css
vendored
Normal file
7
docs/doxygen/github.min.css
vendored
Normal 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}
|
||||
@@ -9,7 +9,7 @@
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="clang-uml" />
|
||||
<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/" />
|
||||
<!-- 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-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-interactive-toc.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^doxygen-awesome-interactive-toc.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">
|
||||
DoxygenAwesomeFragmentCopyButton.init()
|
||||
// DoxygenAwesomeDarkModeToggle.init()
|
||||
DoxygenAwesomeParagraphLink.init()
|
||||
DoxygenAwesomeInteractiveToc.init()
|
||||
DoxygenAwesomeTabs.init()
|
||||
// DoxygenAwesomeInteractiveToc.init()
|
||||
// DoxygenAwesomeTabs.init()
|
||||
</script>
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
<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>
|
||||
$(function() {
|
||||
hljs.configure({useBR: false});
|
||||
$(".fragment").each(function(i,node) {
|
||||
var $node = $(node);
|
||||
// Only apply highlight.js to non-cpp code blocks
|
||||
if (!$node.hasClass("language-cpp")) {
|
||||
$node.html("<pre><code class='" +
|
||||
$node.attr("class")+"'>" +
|
||||
$node.text()+"</code></pre>");
|
||||
$node.attr("class") + "'>" +
|
||||
$node.text() + "</code></pre>");
|
||||
hljs.highlightElement(node);
|
||||
}
|
||||
});
|
||||
});
|
||||
</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">-->
|
||||
<!-- <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"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<div id="top" style="background-color: gainsboro"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<!--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-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">$projectname
|
||||
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
|
||||
<div id="projectname">
|
||||
<span id="projectnumber">$projectnumber</span>
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||||
<div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
<!-- <td style="padding-left: 0.5em;">-->
|
||||
<!-- <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>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
|
||||
2575
docs/doxygen/highlight.js
Normal file
2575
docs/doxygen/highlight.js
Normal file
File diff suppressed because it is too large
Load Diff
245
docs/doxygen/layout-clang-uml.xml
Normal file
245
docs/doxygen/layout-clang-uml.xml
Normal 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>
|
||||
@@ -9,6 +9,15 @@
|
||||
|
||||
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
|
||||
|
||||
Generates UML diagrams in textual PlantUML format, which can then
|
||||
|
||||
1
docs/img/github-mark.svg
Normal file
1
docs/img/github-mark.svg
Normal 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 |
@@ -2,7 +2,7 @@
|
||||
|
||||
<!-- 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 -->
|
||||
|
||||
@@ -46,7 +46,7 @@ The following table presents the PlantUML arrows representing relationships in t
|
||||
| Include (local) |  |
|
||||
| Include (system) |  |
|
||||
|
||||
## 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
|
||||
the following option to the diagram:
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<!-- toc -->
|
||||
|
||||
* [Accessing comment content](#accessing-comment-content)
|
||||
* [`plain` comment parser](#plain-comment-parser)
|
||||
* [`clang` comment parser](#clang-comment-parser)
|
||||
* ['plain' comment parser](#plain-comment-parser)
|
||||
* ['clang' comment parser](#clang-comment-parser)
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
@@ -102,12 +102,12 @@ Currently there are 2 available comment parsers:
|
||||
|
||||
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:
|
||||
* `comment.raw` - raw comment text, including comment markers such as `///` or `/**`
|
||||
* `comment.formatted` - formatted entire comment
|
||||
|
||||
#### `clang` comment parser
|
||||
#### 'clang' comment parser
|
||||
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.formatted` - formatted entire comment
|
||||
|
||||
15
docs/license.md
Normal file
15
docs/license.md
Normal 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.
|
||||
@@ -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:
|
||||
```bash
|
||||
$ clang-uml --init
|
||||
clang-uml --init
|
||||
```
|
||||
2. Edit the generated `.clang-uml` file and set the following:
|
||||
```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:
|
||||
```bash
|
||||
$ clang-uml
|
||||
clang-uml
|
||||
# or to see generation progress for each diagram run
|
||||
$ clang-uml --progress
|
||||
clang-uml --progress
|
||||
```
|
||||
4. Generate SVG images from the PlantUML diagrams:
|
||||
```bash
|
||||
$ plantuml -tsvg puml/*.puml
|
||||
plantuml -tsvg puml/*.puml
|
||||
```
|
||||
5. Add another diagram:
|
||||
```bash
|
||||
$ clang-uml --add-sequence-diagram another_diagram
|
||||
clang-uml --add-sequence-diagram another_diagram
|
||||
```
|
||||
6. Now list the diagrams defined in the config:
|
||||
```bash
|
||||
$ clang-uml -l
|
||||
clang-uml -l
|
||||
The following diagrams are defined in the config file:
|
||||
- another_diagram [sequence]
|
||||
- some_class_diagram [class]
|
||||
|
||||
@@ -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
|
||||
to a very large number of participants in the diagram. If it's an issue, an option can be provided in the diagram
|
||||
definition:
|
||||
|
||||
```yaml
|
||||
combine_free_functions_into_file_participants: true
|
||||
```
|
||||
|
||||
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:
|
||||
|
||||
@@ -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
|
||||
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:
|
||||
|
||||
```cpp
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
<!-- toc -->
|
||||
|
||||
* [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 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)
|
||||
* [YAML anchors and aliases are not fully supported](#yaml-anchors-and-aliases-are-not-fully-supported)
|
||||
* [Class diagrams](#class-diagrams)
|
||||
* ["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)
|
||||
* [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)
|
||||
* [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)
|
||||
@@ -21,14 +21,14 @@
|
||||
|
||||
## 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
|
||||
exact stack trace of the fault using the following steps:
|
||||
|
||||
First, build `clang-uml` from source in debug mode, e.g.:
|
||||
```bash
|
||||
$ make debug
|
||||
make debug
|
||||
```
|
||||
|
||||
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.:
|
||||
|
||||
```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
|
||||
@@ -96,11 +96,11 @@ format and then convert
|
||||
to PNG, e.g.:
|
||||
|
||||
```bash
|
||||
$ plantuml -tsvg mydiagram.puml
|
||||
$ convert +antialias mydiagram.svg mydiagram.png
|
||||
plantuml -tsvg mydiagram.puml
|
||||
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
|
||||
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.
|
||||
|
||||
```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 ...
|
||||
```
|
||||
|
||||
@@ -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:
|
||||
|
||||
```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
|
||||
@@ -249,7 +249,7 @@ remove_compile_flags:
|
||||
These options can be also passed on the command line, for instance:
|
||||
|
||||
```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 ...
|
||||
```
|
||||
|
||||
@@ -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:
|
||||
|
||||
```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
|
||||
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
|
||||
@@ -302,6 +302,7 @@ exclude:
|
||||
Hopefully this will be eventually resolved.
|
||||
|
||||
## Sequence diagrams
|
||||
|
||||
### Generated diagram is empty
|
||||
|
||||
In order to generate sequence diagram the `start_from` configuration option must
|
||||
|
||||
Reference in New Issue
Block a user