object-disaster/readme.md

1.6 KiB

Object Disaster

Command-line tool to analyze C/C++ projects structure based on the generated object files.

Raylib structure

Blender structure

Images generated by Gephi.

Projects tested, Raylib and Blender.

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.