Skip to content
Jack Vanlightly edited this page Mar 10, 2018 · 7 revisions

Create method call graphs for your applications in Neo4j, Gephi and other graphing tools. Integrate solution analysis into your build pipeline.

This is not a downloaded tool yet. Currently it is under development and when the minimal features are ready I will make it into a NuGet package and show how to integrate it into builds.

Three Types of Graph

We'll use the WhaleRidesInc.WebService example application. When we invoke the AddWhale method of its web service, we get the following call graph.

WebService -> BusinessLogic  ---------------------------------> Infrastructure

AddWhale (A - public) 
       |
       -----> AddWhale (C - public)
       |             |
       |             --> IsValidWhale (D - public)
       |             |              |
       |             |              -> GetNumberOfWhalesInSpecies (E - private)
       |             |                                          |  
       |             |                                           -> GetCount (F - public)
       |             |
       |             ---------------------------------------------> Add (G - public)
       |
       -> Convert (B - private)          

Each graph type displays that graph in different ways.

Full Call Graph

Shows the graph in full detail including private method calls:

Public Method Graph

Omits all private method calls. Of course those private methods still exist, but they are just not included in the graph.

Cross-Assembly Call Graph

This graph shows only the cross assembly calls. This means that each relationship is a call from one assembly to another. This graph is useful if you want to query the relationships between assemblies or you simply don't need the detail of the internal assembly calls. This graph will produce faster queries due to the lesser quanity of hops.

Notice how method C and D point to method F. In this graph C does not point to D as it does in reality. This is because this graph just shows that starting a C, we end up with a cross assembly call to F.

Neo4j Console Example

We can contrast the three graph types in the below screenshots of the sister application PorpoiseRidesInc.WebAPI which has the same structure but with async/await.

See the bottom right hand side of each graph where the A-G methods are found:

Full Graph of PorpoiseRidesInc.WebAPI example application.

Public Methods Graph of PorpoiseRidesInc.WebAPI example application.

Cross Assembly Graph of PorpoiseRidesInc.WebAPI example application.

Green nodes are methods, red node is a database.

Displaying Different Labels in Neo4j

Displaying assembly name.

Displaying method name.

Method Nodes

Information about each method is stored including if a method has an interface and implementation, or an abstract version.

Build pipeline integration

Not available yet.