Dependency Extraction and Processing System

Formerly graph-includes toolkit

Yann Dirson

Table of Contents
1. In short
2. Important notice
3. Installation instructions
4. How to take advantage of this tool to improve your code
4.1. On the spirit of dependency cleanup
4.1.1. First look at a dependency graph
4.1.2. Looking further
4.2. Tuning the "files" and "includes" parameters
4.3. Possible strategies to help locating abusive dependencies
5. Tool architecture
5.1. Overview:
5.2. State of things
6. Command-line usage for graph-includes
6.1. output type
6.2. what to draw
6.3. how to draw
7. Existing plugins
7.1. Transformations
7.1.1. CompatGroup
7.1.2. Consolidate
7.1.3. TransitiveReduction
7.2. Styles
7.2.1. Node styles
7.2.2. Edge styles
7.3. Project classes
7.3.1. class "default"
7.3.2. class "uniqueincludes"
8. Examples of use
8.1. Pure command-line examples
8.1.1. Graphing graph-includes itself:
8.1.2. Rather clean ones:
8.1.3. Examples only here as a reminder to write proper project classes for them
8.2. Customization examples
9. Caveats
10. Related tools
11. TODO
11.1. general
11.2. core engine
11.3. graph-includes tool
11.4. extractors
11.5. project classes
11.6. grouping
11.7. styling
11.8. documentation
11.9. testsuite
11.10. gui
12. Known bugs

1. In short

DEPS is a set of perl libraries which allows to extract dependency information from arbitrary material (eg. program source files), apply various transformations on this graph to make it more readable or put emphasis on one aspect of it, and draw it.

The graph-includes tool is the current command-line interface to DEPS. It is quite limited, in that it only extracts dependency information from files, and applies predefined transformations, on which the user has limited influence through flags. A more generic tool is planned, but will probably wait until various aspects of the DEPS design gets finalized.

Currently available graph transformations are:

It currently supports graphing the C/C++ #include relationship, and to a certain extent perl inter-module dependencies, using graphviz or tulip.