Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

29 Commits

Repository files navigation

CodeDependencyVisualizer

This tool is intended for reverse engineering UML class diagrams out of existing C++ code. It can generate class diagrams with inheritances and associations.

You might also take a look at my blogpost: http://gernotklingler.com/blog/libclang-reverse-engineering-uml-class-diagrams/

Dependencies

  • python 2.7
  • clang version 3.5
  • graphvitz (for the dot tool) to be able to transform the generated dot file to an image

Just tested on Linux.

Usage

For usage information run: python ./CodeDependencyVisualizer.py --help

usage: CodeDependencyVisualizer.py [-h] -d D [-o OUTFILE]
[-u WITHUNUSEDHEADERS] [-a] [-i] [-p] [-t]
[-P] [-I INCLUDEDIRS [INCLUDEDIRS ...]]
[-v]
CodeDependencyVisualizer (CDV)
optional arguments:
-h, --help show this help message and exit
-d D directory with source files to parse (searches
recusively)
-o OUTFILE, --outFile OUTFILE
output file name / name of generated dot file
-u WITHUNUSEDHEADERS, --withUnusedHeaders WITHUNUSEDHEADERS
parse unused header files (slow)
-a, --associations draw class member assiciations
-i, --inheritances draw class inheritances
-p, --privMembers show private members
-t, --protMembers show protected members
-P, --pubMembers show public members
-I INCLUDEDIRS [INCLUDEDIRS ...], --includeDirs INCLUDEDIRS [INCLUDEDIRS ...]
additional search path(s) for include files (seperated
by space)
-v, --verbose print verbose information for debugging purposes
--exclude_classes EXCLUDE_CLASSES
classes matching this pattern will be excluded
--include_classes INCLUDE_CLASSES
only classes matching this pattern will be included

Examples

./CodeDependencyVisualizer.py -aiptP --verbose -d dummyCppProject -I dummyCppProject/subfolder"

The command above just creates the file 'uml.dot'. To convert the dot file to an svg image run the dot tool:

dot -T svg -o uml.svg uml.dot

About

Reveres engineering UML class diagrams with libclang

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages