A tool to visualize include graphs for C++ projects
Project description
# :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:
<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:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ig-cpp-0.1.9.tar.gz
(86.7 kB
view details)
Built Distribution
File details
Details for the file ig-cpp-0.1.9.tar.gz
.
File metadata
- Download URL: ig-cpp-0.1.9.tar.gz
- Upload date:
- Size: 86.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1612f4bf23dc7a924fe9373b49caeab024b14053349b90424f41961b11a01f05 |
|
MD5 | 8b62929ee86b55608c4abddb48596fb0 |
|
BLAKE2b-256 | 58aea30dca9ac4d9e362c96634ddb33f6a2dd409a27f8eac14865a01179f1714 |
File details
Details for the file ig_cpp-0.1.9-py2.py3-none-any.whl
.
File metadata
- Download URL: ig_cpp-0.1.9-py2.py3-none-any.whl
- Upload date:
- Size: 96.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c30a7fd339351a38ada533fa7a7fe6114cfe5b253f49cc0a11a8ce69a0430b45 |
|
MD5 | 002e3597d0d8c83a46c5d60ce8110923 |
|
BLAKE2b-256 | 3bb917175883580bd2eba22f354d50660e15b4c38e995e4fdd056e75a7d21548 |