Updated changelog

This commit is contained in:
Bartek Kryza
2022-12-19 20:15:10 +01:00
parent b21b60668e
commit e87b4dccc0
2 changed files with 37 additions and 20 deletions

View File

@@ -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

View File

@@ -1,22 +1,20 @@
# clang-uml - C++ UML diagram generator based on Clang and PlantUML # clang-uml - C++ UML diagram generator based on Clang
[![Build status](https://github.com/bkryza/clang-uml/actions/workflows/build.yml/badge.svg)](https://github.com/bkryza/clang-uml/actions) [![Build status](https://github.com/bkryza/clang-uml/actions/workflows/build.yml/badge.svg)](https://github.com/bkryza/clang-uml/actions)
[![Coverage](https://codecov.io/gh/bkryza/clang-uml/branch/master/graph/badge.svg)](https://codecov.io/gh/bkryza/clang-uml) [![Coverage](https://codecov.io/gh/bkryza/clang-uml/branch/master/graph/badge.svg)](https://codecov.io/gh/bkryza/clang-uml)
[![Version](https://img.shields.io/badge/version-0.2.2-blue)](https://github.com/bkryza/clang-uml/releases) [![Version](https://img.shields.io/badge/version-0.3.0-blue)](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
as `cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ...` * For [CMake](https://cmake.org/) projects, simply invoke the `cmake` command
* For Make projects checkout [compiledb](https://github.com/nickdiego/compiledb) or [Bear](https://github.com/rizsotto/Bear) as `cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ...`
* For Boost-based projects try [commands_to_compilation_database](https://github.com/tee3/commands_to_compilation_database) * For Make projects checkout [compiledb](https://github.com/nickdiego/compiledb)
* For SCons, invoke `compilation_db` tool (requires SCons > 4.0.0) 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)
### 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) | ![dependency](docs/img/puml_dependency.png) | | Include (system) | ![dependency](docs/img/puml_dependency.png) |
### 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,13 +484,15 @@ 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
* [PlantUML](https://plantuml.com/) - language and diagram for generating UML diagrams * [Clang LibTooling](https://clang.llvm.org/docs/LibTooling.html) - a C++ library for creating tools based on Clang
* [Catch2](https://github.com/catchorg/Catch2) - C++ unit test framework * [PlantUML](https://plantuml.com/) - language and diagram for generating UML diagrams
* [glob](https://github.com/p-ranav/glob) - Unix style path expansion for C++ * [Catch2](https://github.com/catchorg/Catch2) - C++ unit test framework
* [CLI11](https://github.com/CLIUtils/CLI11) - command line parser for C++ * [glob](https://github.com/p-ranav/glob) - Unix style path expansion for C++
* [inja](https://github.com/pantor/inja) - a template engine for modern C++ * [CLI11](https://github.com/CLIUtils/CLI11) - command line parser for C++
* [inja](https://github.com/pantor/inja) - a template engine for modern C++
## Contributing ## Contributing