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.
/modules/intellij-plugin/build.gradle, and specify the desired SDK version.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:
reveng-cli.jar: Fat JAR containing the Reverse Engineering CLI Tool
reveng-desktop.jar: Fat JAR containing the Reverse Engineering Tool desktop app.
reveng-desktop.msi: MSI installer for the Reverse Engineering Tool desktop app.
reveng-desktop-linux.tar.gz: Linux Reverse Engineering Tool desktop app (app-image).
reveng-cli-linux.tar.gz: Linux CLI executable (bash wrapper + JAR, useful for GitHub Actions).
reveng-intellij-plugin.zip: ZIP archive containing the IntelliJ IDEA plugin for the Reverse Engineering Tool plugin.
NOTE: If you are using a non-Windows system, ensure that Graphviz is installed because it is a required dependency for all release artifacts.
This project reads the raw text of inputted code files. The raw text is passed through ANTLR, which uses specific grammar files to creates a parse tree representing the code. We have our own code which visits the parse tree, reading information about classes and their contents from the code. Once we’ve collected this information, we convert that information into a PlantUML file, and run that through PlantUML’s tools to create UML diagrams which we can save, or pass to one of our tools to display to users.
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
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
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
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:
We added comprehensive JUnit tests for:
.java files, malformed input handling, and extension checks.To run the unit tests, execute the following command:
./gradlew :modules:core:test
All sample Java files used for testing are located in the src/test/resources directory.
All parser-related tests passed successfully, confirming that:
Testing documentation coming soon.
You can run the plugin in a sandbox IntelliJ IDE using any of these methods:
Method 1: From Gradle Tool Window
reveng → Tasks → intellij platform → runIderunIdeMethod 2: From Terminal
./gradlew runIde
For comprehensive plugin documentation, see docs/RUNNING_THE_PLUGIN.md.
./reveng <input.java> <output1> [output2...] [outputLocation] [--print]
| 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 |
./reveng TestClass.java TestDiagram.puml
./reveng TestClass.java TestDiagram.png
./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.
Jonathon Flynn, Ph.D.
Professor at MSOE
flynn@moe.edu
| Name | Role | |
|---|---|---|
| Jude Gill | Product Owner Proxy | gillj@msoe.edu |
| Bryce Jochman | Note Taker | jochmanb@msoe.edu |
| Stephen Miller | Scrum Master | millers@msoe.edu |
| Kaiden Pollesch | DevOps | polleschk@msoe.edu |
| Name | Role | |
|---|---|---|
| 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 |
--print flag, only file creation confirmations are displayedLicense information coming soon.