2

I am currently working on reverse engineering another program from source. The source contains 159 C++ source files and 2269 includes. As can be seen, going through this by myself is impractical.

I am looking to generate function call graphs and USES diagram. From the post on Stack Overflow I can generate function calls. A lot of people are saying that Doxygen is very good at doing this. I am currently looking into utilizing some of the tools in the forum post above and Doxygen.

However, I was wondering if there are tools that can generate both the call map and the USES diagram in Windows. Windows is preferred but I can work with a Linux version.

Does any one know of any good tool(s) to generate the USES diagram from source?

Also, as a final word, the USES diagram is not a USE-CASE diagram. These two are different.

EDIT 1:

Ok, so I talked to a friend that described what a USES diagram is. The diagram displays the modules and how each module connects to one another. The arrows display the data transfer between the modules. It can be described that M1 uses M12 uses M2.

I looked on the Internet to gain some more details on constructing one. However, I was not able to find much of anything. I wasn't too sure if there was another name. So, I posted a question on RE.SE

An answer to my question is that it sounds much like a dependency diagram. Looking into this diagram, it sounds very much like what a USES diagram is and for now, I will consider this to be true.

Also, I neglected to add this into my original post but, the software would need to be free as I have no financial assets to do this. However, I do have access to a university so if you think that the software might be something a university has, then I can check it (for those wondering, I go the University of Toledo in Toledo, Ohio)

5
  • What precisely do you mean by "USES"?
    – Ira Baxter
    Feb 13, 2016 at 10:55
  • That is the name of the graph. I attempted to describe it. I am searching for tools that can create this type of diagram. Not sure why it was downvoted 1. I thought this was a pretty precise explanation, I think that there is another name instead of USES. Maybe be an old-term for the diagram
    – philm
    Feb 13, 2016 at 14:01
  • I see no attempt whatsoever to explain what a USES graph is (which might explain the downvote, wasn't me)., except that it isn't a USE-CASE diagram. We can't help you, if you can't help us.
    – Ira Baxter
    Feb 13, 2016 at 14:45
  • Ira Baxter, I am sorry for the misunderstanding. I think I got this post mixed up for another post. I will be editing in my post what a USES diagram is. Thank you for pointing this out!
    – philm
    Feb 13, 2016 at 18:34
  • I was using CppDepend, but it's commercial. Feb 13, 2016 at 20:12

2 Answers 2

5

Doxygen, when used with Graphviz, can generate both call graphs and called by graphs as well as include/included by and collaboration graphs - just be sure to tick the option to include undocumented entries.

Features:

  • Free
  • Cross Platform including Windows
  • Can document C++, C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl and some D.
  • With some special format comments you can document your code fully
  • Multiple Diagram formats
  • Multiple Output formats for the documentation

In DoxyWizard: enter image description here Expert Usage: enter image description here

3
  • Hmm ok, I am actually experimenting with doxygen as we speak. I have heard many good things about this. Would you happen to know how I can view the call graph for the entire program? I was scrolling through the generated files and open one of the html files. From there, I can browse through the graphs; however, I would like to see an entire call graph of the whole program rather then bits and pieces
    – philm
    Feb 11, 2016 at 22:41
  • @user3904858s - make sure that you have EXTRACT_ALL set and it may be a good idea to increase DOT_GRAPH_MAX_NODES - start at index.html - click on classes - click on class hierarchy - look for your main class. Feb 12, 2016 at 7:12
  • wonderful, thank you Steve, I will attempt this!
    – philm
    Feb 12, 2016 at 15:51
1

Look at SourceInsight or Understand.

I'm currently enjoying the features provided by Microsoft Visual Studio 2015 to generate call maps and code graphs and perform cyclometric analysis - works well for C++ and C# code I've thrown at it so far.

3
  • Yes, I would love to utilize VS. I found out recently it can create architecture diagrams. However, you have to have the paid version of VS in order to take advantage of the tools. Please correct me if I am mistaken. Understand looks like a nice tool but it is paid. Same thing for SourceInsight.
    – philm
    Feb 13, 2016 at 14:03
  • Sure, Dependency graph and code map generation is only in the Enterprise edition. You didn't specify that you were looking for free tools.
    – IanJ
    Feb 13, 2016 at 14:07
  • My apologies, I should have stated that in the post. However, my school does have a copy of VS. I am not too sure if it is the version that includes this feature. But, it is definitely something I will look into
    – philm
    Feb 13, 2016 at 18:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.