cppdep
performs dependency analysis among components/packages/package groups of a large C/C++ project. This is a rewrite of dep_utils(adep/cdep/ldep)
, which is provided by John Lakos' book "Large-Scale C++ Software Design", Addison Wesley (1996).
Limitations
- Indirect extern declarations of global variables or functions instead of including the proper component header with the declarations.
- Embedded dynamic dependencies, such as dynamic loading and configurable internal services.
- Preprocessing or macro expansion is not performed. Dependency inclusion via preprocessor meta-programming is not handled.
- Dependency exclusion with C style multi-line comments or macros is not respected.
Requirements
- Python 2.7 or 3.4+
- NetworkX
- pydot
- pydotplus
- PyYAML
- PyKwalify 1.6.0+
The dependencies can be installed with pip
.
$ sudo pip install -r requirements.txt
Installation
From the source:
$ ./setup.py install
The latest stable release from PyPi:
$ pip install cppdep
Usage
Create a configuration file that describes the project for analysis. config_schema.yml
is given for guidance.
In the root directory of the project with the configuration file, run the following command to generate dependency analysis reports and graphs.
$ cppdep -c /path/to/config/file
More documentation and example configurations can be found in project wiki.
Acknowledgments
- John Lakos for inventing the analysis and providing
dep_utils
. - Zhichang Yu for rewriting
dep_utils
into Python.