diff --git a/readme.md b/readme.md index 6ca81d9..63de1ab 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,64 @@ - # 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. +