Skip to main content
# :fireworks: ig

<p align="center">
<img src="extra/graph.gif">
<br><br>
<code>ig</code> is a tool to interactively visualize include graphs for C++ projects
<br><br>
<img alt="license" src="https://img.shields.io/github/license/mashape/apistatus.svg"/>
</p>

## Overview

Point `ig` at any directory containing C++ source or header files and it will
construct a full graph of all includes, serve you a local website and visualize
the graph interactively with [sigma.js](http://sigmajs.org), for you to admire.

Usage is very easy:

```sh
$ ig -o include
```

will inspect the folder `include`, serve a website on `localhost:8080` and even
open your browser for you. The full set of options currently include:

```sh
usage: ig [-h] [--pattern PATTERNS] [-i PREFIXES] [-v] [-p PORT] [-o] [-j]
[-d DIRECTORY] [--relation {includes,included-by}]
[--min-degree MIN_DEGREE] [--group-granularity GROUP_GRANULARITY]
[--full-path] [--colors COLORS] [--color-variation COLOR_VARIATION]
[--color-alpha-min COLOR_ALPHA_MIN]
directories [directories ...]

Visualize C++ include graphs

positional arguments:
directories The directories to look at

optional arguments:
-h, --help show this help message and exit
--pattern PATTERNS The file (glob) patterns to look for
-i PREFIXES, -I PREFIXES, --prefix PREFIXES
An include path for headers to recognize
-v, --verbose Whether to turn on verbose output
-p PORT, --port PORT The port to serve the visualization on
-o, --open Whether to open the webpage immediately
-j, --json Whether to print the graph JSON and not serve it
-d DIRECTORY, --dir DIRECTORY
The directory to store the served files in. Ifnot
supplied, a temporary directory is created.
--relation {includes,included-by}
The relation of edges in the graph
--min-degree MIN_DEGREE
The initial minimum degree nodes should have to be
displayed
--group-granularity GROUP_GRANULARITY
How coarse to group nodes (by folder)
--full-path If set, shows the full path for nodes
--colors COLORS The base RGB colors separated by commas
--color-variation COLOR_VARIATION
The variation in RGB around the base colors
--color-alpha-min COLOR_ALPHA_MIN
The minimum alpha value for colors
```

But does it scale? It scales quite well. The graph you see above is the include
graph for the entire LLVM and clang codebase, which spans more than 5,000 files
and 1.5M LOC. Note that the visualization also includes sliders to group nodes
by folder and filter out low-degree nodes.

## Installation

Get it with pip:

```sh
$ pip install ig-cpp
```

Works with Python 2 and 3.

## Examples

Who ever said C++ was an ugly language?

<p align="center">
<img src="extra/llvm-adt.png">
<br><br>
<b>LLVM/ADT</b>
<br><br>
</p>

<p align="center">
<img src="extra/tf.png">
<br><br>
<b>TensorFlow</b>
<br><br>
</p>

<p align="center">
<img src="extra/libcxx.png">
<br><br>
<b>libc++ (the standard library)</b>
<br><br>
</p>

## Authors

[Peter Goldsborough](http://goldsborough.me) + [cat](https://goo.gl/IpUmJn)
:heart:

Metadata

Release files for ig-cpp 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ig-cpp 0.1.9
File Size Uploaded Provenance Actions
ig-cpp-0.1.9.tar.gz 86.7 kB Without provenance Details for ig-cpp-0.1.9.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ig-cpp 0.1.9
File Interpreter ABI Platform Actions
ig_cpp-0.1.9-py2.py3-none-any.whl Python 3, Python 2 none any Details for ig_cpp-0.1.9-py2.py3-none-any.whl

Total release size: 183.5 kB

Release files / ig-cpp-0.1.9.tar.gz

Download URL ig-cpp-0.1.9.tar.gz
Size 86.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1612f4bf23dc7a924fe9373b49caeab024b14053349b90424f41961b11a01f05
BLAKE2b-256 checksum
How to use checksums
58aea30dca9ac4d9e362c96634ddb33f6a2dd409a27f8eac14865a01179f1714
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / ig_cpp-0.1.9-py2.py3-none-any.whl

Download URL ig_cpp-0.1.9-py2.py3-none-any.whl
Size 96.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
c30a7fd339351a38ada533fa7a7fe6114cfe5b253f49cc0a11a8ce69a0430b45
BLAKE2b-256 checksum
How to use checksums
3bb917175883580bd2eba22f354d50660e15b4c38e995e4fdd056e75a7d21548
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for ig-cpp 0.1.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page