Graphs represent the ultimate abstraction of code – being able to visualize your entire project or zoom in on a specific piece of it in just a glance. You might also find them a useful tool for making your case to management. Understand has many different graphs, and each of these graphs has several different variants. This is not an exhaustive list but demonstrates the most popular graphs in Understand.
Control Flow Graphs
![](https://blog.scitools.com/wp-content/uploads/2021/09/gitahead-3.png)
Call Trees
![](https://blog.scitools.com/wp-content/uploads/2021/09/Apache-1-3-564x1024.png)
Call-By Trees
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-49.png)
Include Tree
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-56.png)
Butterfly Graph
The butterfly graph shows the most important relationship for the kind of entity you select. For functions and methods, it shows both the call and call by trees. However, for a class, it will show the inheritance tree, and for files, it will show the include tree
![](https://blog.scitools.com/wp-content/uploads/2021/09/gitahead-1-2.png)
![](https://blog.scitools.com/wp-content/uploads/2021/09/Screenshot-109.png)
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-52.png)
Declaration Graphs
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-53.png)
Depends On and Depended on By
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-54.png)
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-55.png)
Data Members
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-57.png)
Object References
![](https://blog.scitools.com/wp-content/uploads/2021/09/gitahead-2-2.png)
UML Class Diagram
![](https://blog.scitools.com/wp-content/uploads/2021/09/gitahead-1-7.png)
UML Sequence Diagrams
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-71.png)
Overrides
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-60.png)
Dependency Graphs
These project-level interactive graphs let you explore how the different parts of the code rely on each other. This example from git has more details here.
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-61.png)
Base and Derived Graphs
![](https://blog.scitools.com/wp-content/uploads/2021/09/gitahead-1-8.png)
Architecture Graphs
These graphs let you explore how the code files are currently arranged or create new architectures that help better understand how the code is logically put together.
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-65.png)
Compare – Butterfly Graph
Compare graphs let you identify how code has changed between two versions of the same project
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-66.png)
Compare – Control Flow
![](https://blog.scitools.com/wp-content/uploads/2021/09/Apache-1-2.png)
Project Overview Graphs
These graphs show high-level information to help you get a sense of what’s going on in the project.
- Line Breakdown shows how many lines of code, comments, inactive, preprocessor, and blank lines your project has
- Directory Structure sunburst graph shows how much code is in each directory
- The Most Complex Functions, Most Complex Classes, and Most Complex Files are all based on McCabe Cyclomatic Complexity and let you quickly see the hot spots in your code
- The Largest Functions, Largest Classes, and Largest Files are based on the line count and also help you focus on important regions
![](https://blog.scitools.com/wp-content/uploads/2021/09/image-64.png)
Custom Graphs
If you need something different that we already offer, Understand also allows you to create your own graphs using our APIs.
If you’re interested, you can also read about how we’ve tried to make graphs more interesting.
Do you have solutions for Ruby? If not, any recommendations?
Unfortunately we don’t have any experience with Ruby currently. We’ll add a vote for Ruby as the next language that we include and send out an update when that happens!