I have inherited a large C ++ project that I need to connect to Linux. This project has over 200,000 lines of source code that extend to over 300 files. It would be extremely useful to have a visual dependency / include a tree to reference this project so that I can get a general idea of the internal structure of the application. It will also help me find the “fault lines” between the main modules and the Windows header files so that I can break them later.
The class viewer in Visual Studio just doesn't cut it. I read and found out that Doxygen is a commonly used tool for listing dependencies. I am a much more visual person and found that it is not so useful. Fortunately, I learned about the Graphviz plugin using something called "Dot" that allowed me to generate dependency trees for parts. Unfortunately, hundreds of small dependency trees are generated for specific files, and not for one large, as I had hoped. Here are some examples:


As you can see (I hope), Doxygen / GraphViz seems to give up when the graph gets too large and gray from the child nodes. Then I need to go to the graph for this particular node if I want to see what's next in the tree. This not only limits the visual usefulness of the graph, but if the child of the node depends on any of the nodes in the source graph, these nodes will be shown again. This leads to many duplicate connections, which make it very difficult to conceptually isolate the graph from any given file. As a result, I feel that I am "enlarged" and still do not see the whole picture.
I tried playing with the DOT_GRAPH_MAX_NODES parameter in the Expert view in Doxygen, but this does not seem to affect the area of the created graphs. From the output generated from any given run, it seems that Doxygen itself generates hundreds of graphic files, and Graphviz just correctly generates graphs for each of them. Is there any known way to get Doxygen to generate one large graph file instead of hundreds of smaller ones?
Alternatively, are there any free visual graphics solutions that can handle complex C ++ project files with embedded preprocessor directives, MIDL interfaces, and manually defined inclusion paths, as Doxygen does?
My searches find common graphical display utilities (or questions about them), but nothing special for large C ++ projects. Of course, with all the coding that has been done over the years, someone should have such a tool!
Thanks, For -Alex-
Alex johnson
source share