Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tools to document/visualize call graph?

having recently joined a project with a vast amount of code to get to grips with, I would like to start documenting and visualizing some of the flows through the call graph to give me a better understanding of how everything fits together. This is what I would like to see in my ideal tool:

  • every node is a function/method
  • nodes are connected if one function can call another
  • optional square box in between detailing conditions under which call is made (or a label icon you can hover over like a tooltip)
  • also icon on edge describing parameters
  • hover over node and description is displayed
  • optional icons for node to display pseudo code
  • scenario/domain view - display subset of complete diagram for particular use-case
  • slide view mode - for each frame, the currently executing function is highlighted
  • plenty of options over what to display to reduce on-screen clutter

the interactive use of such a tool is key, I'm not looking for a Graphviz type solution because there would be too much clutter. The ability to form a view of a subset of the entire graph would be very handy (maybe with the unimportant clutter greyed out). Don't need automatic generation from source code, happy to enter it manually.

Almost like a mind-map.

Does that make sense? If you are not aware of such a tool, do you also think it would be useful? (Just in case I decide to go and scratch that itch one day!)

like image 798
Dave Griffiths Avatar asked Jan 12 '11 14:01

Dave Griffiths


People also ask

Which tool gives class diagrams and call graphs?

pycallgraph : a call graph generator for Python programs that uses Graphviz. pyan : a static call graph generator for Python programs that uses Graphviz. gprof2dot : A call graph generator written in Python that converts profiling data for many languages/runtimes to a Graphviz callgraph.

What is function call graph?

Function call graphs, or call trees, are a standard tool often found in reverse engineering tools, code browsers, IDEs, and even file editors. They provide fundamental information about the control flow dependencies for the functions you're examining in your tool.


1 Answers

You don't mention the environment you're using, but if it's .NET, NDepend might come in handy.

like image 96
Willem van Rumpt Avatar answered Sep 18 '22 17:09

Willem van Rumpt