object-disaster/readme.md

65 lines
1.6 KiB
Markdown

# Object Disaster
Command-line tool to analyze C/C++ projects structure based on the generated object files.
![Raylib structure](images/raylib.png "Raylib structure")
![Blender structure](images/blender.png "Blender structure")
Images generated by [Gephi](https://gephi.org/).
Projects tested, [Raylib](https://www.raylib.com/) and [Blender](https://www.blender.org/).
## Warning
This project is highly experimental.
## Why?
There are a lot of complex C/C++ projects on the wild, it can be hard to have an overview of the project's structure. Processing directly the object files and building the graph of dependencies between them is a way to bypass the whatever folder structure and build system has the project.
Moreover this can spot non-obvious dependency cycles between objects.
## Usage
```
disaster.exe "\path\to\my\project" whatever_name
```
The program will generate 3 files:
+ whatever_name_graph.dot : Graph in .dot format, it can be open with tools like Gephi.
+ whatever_objects_info.csv : Table like information of all the objects found.
+ whatever_edge_table.csv : Table like information about the edges of the graph.
## Object groups
This tool groups multiple objects based on dependency cycles
If we have this relation:
```
a -> b -> c -> a
```
a,b and c belong to the same groups.
If we have this other relation
```
a -> b -> c
```
a, b and c belong to different groups.
This could be useful to spot coupling between modules.
## Build instructions
Open a command line with the visual studio x64 environment and run the `build.bat` script.