views:

803

answers:

7

Does any of you know a tool for software visualization, or visual code navigation in c#?

I found a bunch of tools but they're all for Java for some reason.

There's a list of them in wikipedia but none is for the .Net platform.

http://en.wikipedia.org/wiki/Software_visualization#Tools

I'm very much interested in visual code navigation because I get very disoriented around big projects.

+1  A: 

Red Gate's reflector (formerly Lutz Roeder's) allows you to browse assemblies and view their dependencies. Using the analyze function you can see where a class is used and what it uses.

There are also some plugins that make the browsing easier.

Apart from that you can use Visual Studios Object Browser to browse all classes in all referenced assemblies and view their dependencies or you could use the Class View function of Visual Studio to get an overview of the classes and their properties.

Rune Grimstad
A: 

Reflector is certainly an option.

I was more aiming for a visual solution. Perhaps a graph which shows you which class is using which class, or a graph that shows you which method is calling which method.

Examples (although not in C#) are CodeCity, EvoSpaces, CodeCrawler and also some in the link to wikipedia I posted in the original post.

So I was wondering if there's any existing software \ open source project that deals with this stuff.

+1  A: 

I think NDepend is what you are looking for, but unfortunately it's not for free.


Edit: I just saw that there is a limited open source version, too.

Peter
Looks good but - yessshk! - it's expensive.
endian
+1  A: 

You can also use VS's own class diagram to give a graphical view for some items. Although I think its limited to just one project at a time. Add a new 'Class Diagram' to the project, and then drag classes or assemblies etc from the Class view onto it to add them; or go to the class view and right click, view diagram. I find these very useful for looking around, but not so great for editing.

simonjpascoe
+1  A: 

Reflector itself may not offer reasonable visualization of code. But there are addins that can enhance it with such functionality.

Try the following addins on this page:

  • Graph
  • AutoDiagrammer
  • SequenceViz
Frederick
+1  A: 

Frederick, those Reflector add-ins are absolutely great. I will certainly try them out.

I am also interested in "Spacial Representations of Code". It's about using spacial memory to navigate through code (and not get lost).

There's a Microsoft Research group on the subject: http://research.microsoft.com/en-us/projects/SpatialCode/

On that page are a few very cool ideas but no software to download and use (that's research for ya! ).

Does anyone know of anything practical in that direction?

Ofer, it's not a good idea to type your replies in the form of answers. If have to follow up on your question or ask something more than what you originally wrote in your question, the correct way is either to write a comment or edit your question.
Frederick
Thanks Frederick. I'm new to posting in stackoverflow and I actually was looking for a way to do that!If I wrote a question and an answer was partial, or my question was misunderstood, is there a way to resurface my question so that others will know it is still unanswered?Thanks a lot! :)
+1  A: 

It will only be a drop in the ocean, but while you're at it, give Stephan Brenner's .NET Reference Explorer a go. It's very simple, but I find it useful at exactly what it does - graph referenced assemblies.

Daniel Daranas