Skip to content

A tool to visualize the structure of Java code.

License

Notifications You must be signed in to change notification settings

S4N0I/BirdsView

Repository files navigation

BirdsView

About

BirdsView is a tool to visualize the structure of Java projects.

It takes source code and builds a graph of classes and interaces based on method invocations. Vertices are assigned a score according to PageRank or another algorithm of choice. The result is visualized in a force-directed graph.

What you get is a visualization of your project structure:

Tightly coupled classes end up close to each other while unrelated classes don't. Classes which encapsulate a lot of control (they call many other classes' methods) appear as larger nodes.

On top of that, you can hack the generated graph visualization with an embedded JS editor.

Installation and Usage (Unix)

prerequisites: Java 8+, a web browser

java -jar BirdsView-1.0.jar PATH_TO_YOUR_SRC

Important: The PATH_TO_YOUR_SRC has to reference the parent of your java package structure. Meaning if your directory structure is something like:

/home/you/IdeaProjects/YourProject/src/main/java/com/yourdomain/yourpackage/YourClass.java

You would pass /home/you/IdeaProjects/YourProject/src/main/java/ for PATH_TO_YOUR_SRC.

Optional Args

  • -h for help
  • --scoreScale FACTOR to provide an integer factor that is applied to vertex scores. If not specified, a default factor specific to the scoring algorithm is used.
  • The algorithm for vertex scoring:

--pageRank for PageRank (default) --alpha for AlphaCentrality --betweenness for BetweennessCentrality --closeness for ClosenessCentrality --harmonic for HarmonicCentralilty --clustering for ClusteringCoefficient

  • --reverse to point edges from the calling type to the called type

References

This project uses...

This gist created by Peter Kerpedjiev is the base of the visualization code.

About

A tool to visualize the structure of Java code.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published