Updated changelog
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
|
### 0.3.0
|
||||||
* Added support for sequence diagrams with template code
|
* Added support for sequence diagrams with template code
|
||||||
|
|
||||||
### 0.2.2
|
### 0.2.2
|
||||||
|
|||||||
38
README.md
38
README.md
@@ -1,22 +1,20 @@
|
|||||||
# clang-uml - C++ UML diagram generator based on Clang and PlantUML
|
# clang-uml - C++ UML diagram generator based on Clang
|
||||||
|
|
||||||
[](https://github.com/bkryza/clang-uml/actions)
|
[](https://github.com/bkryza/clang-uml/actions)
|
||||||
[](https://codecov.io/gh/bkryza/clang-uml)
|
[](https://codecov.io/gh/bkryza/clang-uml)
|
||||||
[](https://github.com/bkryza/clang-uml/releases)
|
[](https://github.com/bkryza/clang-uml/releases)
|
||||||
|
|
||||||
`clang-uml` is an automatic C++ to [PlantUML](https://plantuml.com) class, sequence
|
`clang-uml` is an automatic C++ to UML class, sequence
|
||||||
and package diagram generator, driven by YAML configuration files. The main idea behind the
|
and package 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
|
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
|
legacy code. The configuration file or files for `clang-uml` define the
|
||||||
type and contents of each generated diagram.
|
type and contents of each generated diagram.
|
||||||
|
Currently the diagrams are generated in [PlantUML](https://plantuml.com) format.
|
||||||
|
|
||||||
`clang-uml` currently supports C++ up to version 17.
|
`clang-uml` currently supports C++ up to version 17.
|
||||||
|
|
||||||
> Current `master` version (and any release since `0.2.0`) has been refactored to use
|
|
||||||
> [Clang LibTooling](https://clang.llvm.org/docs/LibTooling.html) instead of libclang.
|
|
||||||
> Previous version is available in branch `0.1.x`, however it is not maintained.
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
Main features supported so far include:
|
Main features supported so far include:
|
||||||
|
|
||||||
* **Class diagram generation**
|
* **Class diagram generation**
|
||||||
@@ -34,6 +32,7 @@ Main features supported so far include:
|
|||||||
* Generation of try/catch blocks
|
* Generation of try/catch blocks
|
||||||
* Handling of template code including constexpr conditionals
|
* Handling of template code including constexpr conditionals
|
||||||
* Handling of lambda expressions
|
* Handling of lambda expressions
|
||||||
|
* Interactive links to online code to classes and call expressions
|
||||||
* **Package diagram generation**
|
* **Package diagram generation**
|
||||||
* Generation of package diagram based on C++ namespaces
|
* Generation of package diagram based on C++ namespaces
|
||||||
* Interactive links to online code to packages
|
* Interactive links to online code to packages
|
||||||
@@ -48,6 +47,7 @@ and examples in [clang-uml-examples](https://github.com/bkryza/clang-uml-example
|
|||||||
### Distribution packages
|
### Distribution packages
|
||||||
|
|
||||||
#### Ubuntu
|
#### Ubuntu
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo add-apt-repository ppa:bkryza/clang-uml
|
sudo add-apt-repository ppa:bkryza/clang-uml
|
||||||
sudo apt update
|
sudo apt update
|
||||||
@@ -55,6 +55,7 @@ sudo apt install clang-uml
|
|||||||
```
|
```
|
||||||
|
|
||||||
#### Conda
|
#### Conda
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
conda config --add channels conda-forge
|
conda config --add channels conda-forge
|
||||||
conda config --set channel_priority strict
|
conda config --set channel_priority strict
|
||||||
@@ -62,6 +63,7 @@ conda install -c bkryza/label/clang-uml clang-uml
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Building from source
|
### Building from source
|
||||||
|
|
||||||
First make sure that you have the following dependencies installed:
|
First make sure that you have the following dependencies installed:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -98,21 +100,27 @@ LLVM_VERSION=14 make release
|
|||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Generating compile commands database
|
### Generating compile commands database
|
||||||
|
|
||||||
`clang-uml` requires an up-to-date
|
`clang-uml` requires an up-to-date
|
||||||
[compile_commands.json](https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
[compile_commands.json](https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
||||||
file, containing the list of commands used for compiling the source code.
|
file, containing the list of commands used for compiling the source code.
|
||||||
Nowadays, this file can be generated rather easily using multiple methods:
|
Nowadays, this file can be generated rather easily using multiple methods:
|
||||||
|
|
||||||
* For [CMake](https://cmake.org/) projects, simply invoke the `cmake` command
|
* For [CMake](https://cmake.org/) projects, simply invoke the `cmake` command
|
||||||
as `cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ...`
|
as `cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ...`
|
||||||
* For Make projects checkout [compiledb](https://github.com/nickdiego/compiledb) or [Bear](https://github.com/rizsotto/Bear)
|
* For Make projects checkout [compiledb](https://github.com/nickdiego/compiledb)
|
||||||
* For Boost-based projects try [commands_to_compilation_database](https://github.com/tee3/commands_to_compilation_database)
|
or [Bear](https://github.com/rizsotto/Bear)
|
||||||
|
* For Boost-based projects
|
||||||
|
try [commands_to_compilation_database](https://github.com/tee3/commands_to_compilation_database)
|
||||||
* For SCons, invoke `compilation_db` tool (requires SCons > 4.0.0)
|
* For SCons, invoke `compilation_db` tool (requires SCons > 4.0.0)
|
||||||
|
|
||||||
### Invocation
|
### Invocation
|
||||||
|
|
||||||
By default, `config-uml` will assume that the configuration file `.clang-uml`
|
By default, `config-uml` will assume that the configuration file `.clang-uml`
|
||||||
and compilation database `compile_commands.json` files are in the
|
and compilation database `compile_commands.json` files are in the
|
||||||
current directory, so if they are in the top level directory of a project,
|
current directory, so if they are in the top level directory of a project,
|
||||||
simply run:
|
simply run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
clang-uml
|
clang-uml
|
||||||
```
|
```
|
||||||
@@ -121,6 +129,7 @@ The output path for diagrams, as well as alternative location of
|
|||||||
compilation database can be specified in `.clang-uml` configuration file.
|
compilation database can be specified in `.clang-uml` configuration file.
|
||||||
|
|
||||||
For other options checkout help:
|
For other options checkout help:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
clang-uml --help
|
clang-uml --help
|
||||||
```
|
```
|
||||||
@@ -154,6 +163,7 @@ diagrams:
|
|||||||
See [here](docs/configuration_file.md) for detailed configuration file reference guide.
|
See [here](docs/configuration_file.md) for detailed configuration file reference guide.
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
To see what `clang-uml` can do, checkout the test cases documentation [here](./docs/test_cases.md).
|
To see what `clang-uml` can do, checkout the test cases documentation [here](./docs/test_cases.md).
|
||||||
|
|
||||||
In order to see diagrams for the `clang-uml` itself, based on its own [config](.clang-uml) run
|
In order to see diagrams for the `clang-uml` itself, based on its own [config](.clang-uml) run
|
||||||
@@ -169,7 +179,7 @@ and checkout the SVG diagrams in `docs/diagrams` folder.
|
|||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
|
||||||
Source code:
|
The following C++ code:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
template <typename T, typename P> struct A {
|
template <typename T, typename P> struct A {
|
||||||
@@ -403,6 +413,7 @@ generates the following diagram (via PlantUML) based on include directives in th
|
|||||||
| Include (system) |  |
|
| Include (system) |  |
|
||||||
|
|
||||||
### Diagram content filtering
|
### Diagram content filtering
|
||||||
|
|
||||||
For typical code bases, generating a single diagram from entire code or even a single namespace can be too big to
|
For typical code bases, generating a single diagram from entire code or even a single namespace can be too big to
|
||||||
be useful, e.g. as part of documentation. `clang-uml` allows specifying content to be included and excluded from
|
be useful, e.g. as part of documentation. `clang-uml` allows specifying content to be included and excluded from
|
||||||
each diagram using simple YAML configuration:
|
each diagram using simple YAML configuration:
|
||||||
@@ -446,6 +457,7 @@ exclude:
|
|||||||
generation of UML diagrams from C++ and overriding default inference rules for relationships.
|
generation of UML diagrams from C++ and overriding default inference rules for relationships.
|
||||||
|
|
||||||
The following decorators are currently supported:
|
The following decorators are currently supported:
|
||||||
|
|
||||||
- [note](docs/test_cases/t00028.md) - add a PlantUML note to a C++ entity
|
- [note](docs/test_cases/t00028.md) - add a PlantUML note to a C++ entity
|
||||||
- [skip](docs/test_cases/t00029.md) - skip the underlying C++ entity
|
- [skip](docs/test_cases/t00029.md) - skip the underlying C++ entity
|
||||||
- [skiprelationship](docs/test_cases/t00029.md) - skip only relationship generation for a class property
|
- [skiprelationship](docs/test_cases/t00029.md) - skip only relationship generation for a class property
|
||||||
@@ -455,7 +467,9 @@ The following decorators are currently supported:
|
|||||||
- [style](docs/test_cases/t00031.md) - add PlantUML style to a C++ entity
|
- [style](docs/test_cases/t00031.md) - add PlantUML style to a C++ entity
|
||||||
|
|
||||||
### Doxygen integration
|
### Doxygen integration
|
||||||
`clang-uml` decorstors can be omitted completely in [Doxygen](https://www.doxygen.nl/index.html), by adding the following
|
|
||||||
|
`clang-uml` decorstors can be omitted completely in [Doxygen](https://www.doxygen.nl/index.html), by adding the
|
||||||
|
following
|
||||||
lines to the Doxygen config file:
|
lines to the Doxygen config file:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -470,7 +484,9 @@ ALIASES += clanguml{3}=""
|
|||||||
The build-in test cases used for unit testing of the `clang-uml`, can be browsed [here](./docs/test_cases.md).
|
The build-in test cases used for unit testing of the `clang-uml`, can be browsed [here](./docs/test_cases.md).
|
||||||
|
|
||||||
## Acknowledgements
|
## Acknowledgements
|
||||||
|
|
||||||
This project relies on the following great tools:
|
This project relies on the following great tools:
|
||||||
|
|
||||||
* [Clang LibTooling](https://clang.llvm.org/docs/LibTooling.html) - a C++ library for creating tools based on Clang
|
* [Clang LibTooling](https://clang.llvm.org/docs/LibTooling.html) - a C++ library for creating tools based on Clang
|
||||||
* [PlantUML](https://plantuml.com/) - language and diagram for generating UML diagrams
|
* [PlantUML](https://plantuml.com/) - language and diagram for generating UML diagrams
|
||||||
* [Catch2](https://github.com/catchorg/Catch2) - C++ unit test framework
|
* [Catch2](https://github.com/catchorg/Catch2) - C++ unit test framework
|
||||||
|
|||||||
Reference in New Issue
Block a user