Reverse Engineering Tool

A simplified and accessible alternative to Enterprise Architect for generating UML diagrams from student code.

This project provides an intuitive tool designed to support both instructional review and student learning at MSOE. It streamlines the workflow for faculty and students by making UML diagram generation from Java code straightforward and efficient.


Table of Contents


Releases

This project has automated releases. A release is triggered on a successful commit to the main branch. You may find the latest releases here.

Each automated release provides downloads to the following artifacts:

NOTE: If you are using a non-Windows system, ensure that Graphviz is installed because it is a required dependency for all release artifacts.


Key Technologies


Getting Started

Prerequisites

Verify that Java 21 is installed on your system and that the JAVA_HOME environment variable points to it, or that its directory is included in your system PATH

Building the Project

Core Module Build Instructions

Run the following command to build the Core module:

./gradlew modules:core:build

This will build a Fat JAR, located in modules/core/build/libs/.

Run the JAR using:

java -jar modules/core/build/libs/reveng-cli.jar

Desktop App Module Build Instructions

Run the following command to build the Desktop App module:

./gradlew modules:desktop-app:build

This will build a Fat JAR, located in modules/desktop-app/build/libs/.

Run the JAR using:

java -jar modules/desktop-app/build/libs/reveng-desktop.jar

IntelliJ Plugin Module Build Instructions

Run the following command to build the IntelliJ Plugin module:

./gradlew modules:intellij-plugin:buildPlugin

This will create a zip distributable, located in modules/intellij-plugin/build/distributions/.

Install the plugin in IntelliJ:

  1. Navigate to Settings >> Plugins >> (next to Installed) >> Install Plugin from Disk
  2. Select the generated zip.

Test Instructions

We added comprehensive JUnit tests for:

To run the unit tests, execute the following command:

./gradlew :modules:core:test

Test Resources

All sample Java files used for testing are located in the src/test/resources directory.

Outcome

All parser-related tests passed successfully, confirming that:

Running Tests

Testing documentation coming soon.

Running the IntelliJ Plugin

You can run the plugin in a sandbox IntelliJ IDE using any of these methods:

Method 1: From Gradle Tool Window

  1. Navigate to View → Tool Windows → Gradle
  2. Expand: reveng → Tasks → intellij platform → runIde
  3. Double-click runIde

Method 2: From Terminal

./gradlew runIde

For comprehensive plugin documentation, see docs/RUNNING_THE_PLUGIN.md.


Usage

Command Syntax

reveng <input.java> <output1> [output2...] [outputLocation] [--print]

Parameters

Parameter Required Description
<input.java> Path to the Java source file to parse (must contain exactly one public class)
<output1> [output2...] One or more output files (.puml or .png)
[outputLocation] Optional folder to save output files (defaults to current directory)
[--print] Optional flag to print methods and fields to the console

Examples

Generate a PlantUML file

reveng TestClass.java TestDiagram.puml

Generate a PNG diagram

reveng TestClass.java TestDiagram.png

Generate multiple outputs with console output

reveng TestClass.java TestDiagram.puml TestDiagram.png ./output --print

This command generates both PlantUML and PNG files in the ./output folder and prints class details to the console.


Project Team

Product Owner

Jonathon Flynn, Ph.D.
Professor at MSOE
flynn@moe.edu

Fall 2025 Development Team

Name Role Email
Jude Gill DevOps gillj@msoe.edu
Emanuel Gonzalez Product Owner Proxy gonzalezem@msoe.edu
Stephen Miller Scrum Master millers@msoe.edu
Kaiden Pollesch Note Taker polleschk@msoe.edu

Important Notes


License

License information coming soon.