Update readme.md
parent
61d40d9cef
commit
6ea2e7f86b
59
readme.md
59
readme.md
|
|
@ -1,7 +1,64 @@
|
||||||
|
|
||||||
# Object Disaster
|
# Object Disaster
|
||||||
|
|
||||||
Command-line tool to analyze C/C++ projects structure based on the generated object files.
|
Command-line tool to analyze C/C++ projects structure based on the generated object files.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue