David8472 / CPSC410

0 stars 1 forks source link

CPSC 410 Project - Code Galaxy

By Programmers of the Galaxy

Contributors:

Overview

Code Galaxy creates a dynamic space-themed visualization of a Git repository containing Java projects by analyzing the Git repository commit by commit. The output is in the form of an HTML file to be displayed in a browser.

In the visualization, starship(s) representing author(s) are exploring a codebase represented by a galaxy with the following mappings:

Initially, before any commits are made, the galaxy will be empty. Gradually, as commits are made and packages/classes/methods are added, parts of the galaxy will start to appear as celestial objects are “discovered” by ship(s) that represent authors. If an author interacts with more than one object during a commit, the spaceship will visit one celestial body and send probes to the others. Finally, when all commits are traced through, the entire galaxy will be visible, and the current state of the codebase is reached.

Analysis Performed (Per Git Commit)

How to run the project

  1. Ensure the following is installed first: Ruby, Java, and Maven.
    • Additional instructions for Windows: Ensure that the ruby/bin directory and the maven/bin directory are on the machine’s system path.
  2. Run GlobalController.java and enter the path to a git repo stored on the local machine.
    • NOTE: It is important that the git repo selected uses Maven as its build system for the Java project. It is also assumed that a Maven instructions file is named “pom.xml”. Other git repos that use other build systems or do not use any build system are currently not supported.
  3. The visualization output will be generated in an HTML file in the HTML_Output directory in the visualizer directory (location and name of HTML file will be provided in the console as well if needed), which the user can then manually open in a browser.
    • NOTE: Currently the visualization HTML works on Firefox. To open in Chrome, a new shortcut needs to be used that invokes the --allow-file-access-from-files option.

Libraries / Tools Used