An Eclipse Plugin for Visualization of Call Hierarchies in Java Projects

Matthias Labschütz, e8971103#student.tuwien.ac.at

This software implements ideas taken from Hierarchical Edge Bundles: Visualization of Adjacency Relations in Hierarchical Data [1]. The program visualizes call hierarchies of a Java program in eclipse.

Binaries at: 

bin\callgraph_1.0.0.201306111622.jar

Sourcecode at: 

source.zip

Documentation at: 

index.html

Installation

·         Copy bin\callgraph_1.0.0.201306111622.jar to your Eclipse /dropins folder

·         Start Eclipse

·         Open the view: Window -> Show View -> Other... -> Graph Category -> Graph View

Usage

Figure 1 shows the main view of the program

      full

Figure 1: Call graph for a software project.

The user interface allows the following interaction:

(1)   Clicking into the main view allows panning (drag & drop) and zooming (mouse wheel).

(2)   Selection of nodes is possible by clicking on them. This selects only the edges going through the specified node.

(3)   The combo box specifies the active project. The refresh button is used to generate a call graph.

(4)   The number of currently selected edges is displayed here.

(5)   Text size and spline thickness can be chosen. The Context checkbox greys out non-selected splines.

(6)   A progress bar shows the progress during loading. (Loading times for larger projects can be noticeable.)

Figure 2 shows a focus and context view that greys out non-selected edges.

full

Figure 2: Call graph for a software project with the loader package selected.

Figure 3 shows a zoomed version of the graph with the selected class CameraParameters. The edges show method calls from red to green. The selected class is called by different classes in other packages, but doesn’t call any methods itself, since no red edges are incident to the class. In addition it is possible to see that there are 71 calls to the CameraParameters methods from other classes.

full

Figure 3: Zoomed in and selection of the class CameraParameters.

Implementation

Figure 4 shows the rather simple call hierarchy graph of the Plugin itself. The following libraries have been used:

·         LWJGL

·         jgrapht for the graph structure (not the layout)

·         Slick for loading textures

full

Figure 4: Call hierarchy of the Plugin itself.

References

[1] Holten D., ‘Hierarchical Edge Bundles: Visualization of Adjacency Relations in Hierarchical Data‘, IEEE Transactions on Visualization and Computer Graphics 2006