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 and C++ code straightforward and efficient.
Copyright 2026, Milwaukee School of Engineering
This project reads the raw text of inputted code files. The raw text is passed through ANTLR, which uses specific grammar files to create 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.
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.
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
Each module can be built independently. The Core module produces the CLI JAR, the Desktop App module produces the desktop JAR, and the IntelliJ Plugin module produces the plugin ZIP.
Run the following command to build the Core module:
./gradlew modules:core:buildThis will build a Fat JAR, located in
modules/core/build/libs/.
Run the JAR using:
java -jar modules/core/build/libs/reveng-cli.jarRun the following command to build the Desktop App module:
./gradlew modules:desktop-app:buildThis 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.jarRun the following command to build the Plugin module:
./gradlew modules:intellij-plugin:buildPluginThis 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.
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 runIdeFor comprehensive plugin documentation, see
docs/RUNNING_THE_PLUGIN.md.
| Language | File Extensions | Supported Constructs | Notes |
|---|---|---|---|
| Java | .java |
Classes, abstract classes, interfaces, enums, records | Full support |
| C++ | .cpp |
Classes, structs, enums, unions |
The CLI tool accepts a source file or directory as input and generates UML diagrams in one or more output formats.
java -jar reveng-cli.jar <input> [output1] [output2...] [--print] [--grading <rules.md>]| Parameter | Required | Description |
|---|---|---|
<input> |
✓ | Path to the Java (.java) or C++ (.cpp) source file, or a directory containing source files |
[output1] [output2...] |
✗ | One or more output files (.puml, .png, or
.svg). Full path can be included
e.g. C:\output\MyDiagram.puml |
[--print] |
✗ | Print parsed class details to the console |
[--grading <rules.md>] |
✗ | Run grading mode against a Markdown rules file |
--about |
✗ | Print project contributors and exit |
For grading mode documentation and rule syntax, see docs/GRADING_MODE.md.
Notes: - Output folders are created automatically if
they don’t exist - Without the --print flag, only file
creation confirmations are displayed
The desktop app provides a graphical interface for generating and viewing UML diagrams.
java -jar modules/desktop-app/build/libs/reveng-desktop.jarOr use the installer from the Releases section.
.puml, .png, .svg, or
.pdfLoad a rules file via Grading → Load Rules File to
validate the diagram against a set of rules. Violations are highlighted
red in the diagram and listed in the warnings panel to the right. See docs/GRADING_MODE.md for
rule syntax.
This project uses TestNG as its primary test
framework and Cucumber for BDD (behavior-driven) tests.
BDD scenarios are written in plain English in .feature
files under src/test/resources/bddtests/ and backed by step
definitions in src/test/java/bddtests/.
To run all tests for a specific module:
# Core Module (parsers + CLI scenarios)
./gradlew modules:core:test# Desktop App Module
./gradlew modules:desktop-app:test# IntelliJ Plugin Module
./gradlew modules:intellij-plugin:test# All Modules
./gradlew testAll sample files used for testing are located in
src/test/resources/ in each module.
java -jar reveng-cli.jar TestClass.java TestDiagram.puml
java -jar reveng-cli.jar TestClass.java TestDiagram.png
java -jar reveng-cli.jar TestClass.java TestDiagram.svg
java -jar reveng-cli.jar TestClass.java TestDiagram.puml TestDiagram.png
java -jar reveng-cli.jar src/ TestDiagram.puml
java -jar reveng-cli.jar TestClass.cpp TestDiagram.puml
java -jar reveng-cli.jar TestClass.java TestDiagram.puml --grading RULES.md
Jonathon Flynn, Ph.D.
Professor at MSOE
flynn@msoe.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 |
/modules/.core/src/main/antlr/CPPLexer.g4
for details on how to re-enable these./modules/intellij-plugin/build.gradle, and specify the
desired SDK version.This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for more information.
Copyright 2026, Milwaukee School of Engineering
Authors: Jude Gill, Stephen Miller, Kaiden Pollesch, Emanuel
Gonzalez
Last Updated: 2026-05-07