7.7 KiB
7.7 KiB
Configuration file reference
Top level options
compilation_database_dir- path to the directory containingcompile_commands.jsonoutput_directory- path to the directory where PlantUML diagrams will be generateddiagrams- the map of diagrams to be generated, each diagram name is provided as the key of the diagram YAML nodedebug_mode- add inline debug information in the generated diagramsadd_compile_flags- add compile flags to all compilation database entriesremove_compile_flags- remove compile flags from all compilation database entriesquery_driver- name or path to compiler driver, which should be queried for system include paths (e.g. arm-none-eabi-g++)
Diagram options
type- type of diagram, one of [class,sequence,package,include]glob- list of glob patterns to match source code files for analysisinclude_relations_also_as_members- when set tofalse, class members for relationships are rendered in UML are skipped from class definition (default:true)generate_method_arguments- determines whether the class diagrams methods contain full arguments (full), are abbreviated (abbreviated) or skipped (none)using_namespace- similar to C++using namespace, aA::Bvalue here will render a classA::B::C::MyClassin the diagram asC::MyClass, at most 1 value is supportedgenerate_packages- whether or not the class diagram should contain packages generated from namespaces or subdirectoriespackage_type- determines how the packages are inferred:namespace- use C++ namespaces,directory- use project's directory structureinclude- definition of inclusion patterns:namespaces- list of namespaces to includerelationships- list of relationships to includeelements- list of elements, i.e. specific classes, enums, templates to includeelement_types- list of element types e.g.enum,class,conceptaccess- list of visibility scopes to include (e.g.private)subclasses- include only subclasses of specified classes (and themselves)specializations- include all specializations or instantiations of a given templatedependants- include all classes, which depend on the specified classdependencies- include all classes, which are dependencies of the specified classcontext- include only entities in direct relationship with specified classes
exclude- definition of exclusion patterns:namespaces- list of namespaces to excluderelationships- list of relationships to excludeelements- list of elements, i.e. specific classes, enums, templates to excludeelement_types- list of element types e.g.enum,class,conceptaccess- list of visibility scopes to exclude (e.g.private)subclasses- exclude subclasses of specified classes (and themselves)specializations- exclude all specializations or instantiations of a given templatedependants- exclude all classes, which depend on the specified classdependencies- exclude all classes, which are dependencies of the specified classcontext- exclude only entities in direct relationship with specified classes
layout- add layout hints for entities (classes, packages)plantuml- verbatim PlantUML directives which should be added to a diagrambefore- list of directives which will be added before the generated diagramafter- list of directives which will be added after the generated diagram
Example complete config
# Directory containing the compile_commands.json file
compilation_database_dir: debug
# Inject additional compile commands to the compilation database entries
add_compile_flags:
- '-Wno-vla-extension'
# Remove specified compile flags from all compilation database entries
remove_compile_flags:
- '-Wshadow'
# Compiler driver command to query for system include paths
query_driver:
- arm-none-eabi-g++
# The directory where *.puml files will be generated
output_directory: docs/diagrams
# Set this as default for all diagrams
generate_method_arguments: none
# Enable generation of hyperlinks to diagram elements
generate_links:
# Link pattern
link: "https://github.com/bkryza/clang-uml/blob/{{ git.commit }}/{{ element.source.path }}#L{{ element.source.line }}"
# Tooltip pattern
tooltip: "{{ element.name }}"
# The map of diagrams - keys are also diagram file names
diagrams:
main_package:
# Include this diagram definition from a separate file
include!: uml/main_package_diagram.yml
config_class:
type: class
# Do not include rendered relations in the class box
include_relations_also_as_members: false
# Generate packages from the namespaces
generate_packages: true
package_type: namespace # or 'directory' to generate from projects subdirectories
# Limiting the number of files to include can significantly
glob:
- src/common/model/*.h
- src/common/model/*.cc
- src/class_diagram/model/*.h
- src/class_diagram/model/*.cc
include:
# Only include entities from the following namespaces
namespaces:
- clanguml::common::model
- clanguml::class_diagram::model
# Only include elements in direct relationship with ClassA
context:
- ClassA
exclude:
# Do not include private members and methods in the diagram
access:
- private
layout:
# Add layout hints for PlantUML
ClassA:
- up: ClassB
- left: ClassC
ClassD:
- together: [ClassE, ClassF, EnumG]
ClassX:
- row: [ClassY1, ClassZ1]
- column: [ClassY2, ClassZ2]
# Specify customized relationship hints for types which are
# arguments in template instantiations
relationship_hints:
# All tuple arguments should be treated as aggregation
std::tuple: aggregation
# All some_template arguments should be treated as associations
# except for arguments with indexes 2 and 10
ns1::n2::some_template:
default: association
2: composition
10: aggregation
# Entities from this namespace will be shortened
# (can only contain one element at the moment)
using_namespace:
- clanguml::class_diagram::model
plantuml:
# Add this line to the beginning of the resulting puml file
before:
- 'title clang-uml class diagram model'
Determining config file location
If -c,--config option is not provided, clang-uml will try to open file
.clang-uml in the current directory and fail if it doesn't exist.
With -c,--config option pointing to a valid .clang-uml file path, the file
configuration will be loaded from that file.
Furthermore, when the value of -c,--config option is - - the entire config
will be read from stdin, which can be useful for scripting and generating
config Yaml documents on the fly.
Paths
By default, all paths specified in the configuration file, including:
globoutput_directorycompilation_database_dirpathsfilter
are relative to the parent directory of the configuration file. This can be changed in the following ways:
- by specifying
relative_tooption in the configuration file - by providing
--paths-relative-to-pwdcommand line option, in which case all paths will be relative to the directory whereclang-umlis executed (this only makes sense for automation whereclang-umlis executed from the same location relative to the project directory