⚠ not yet verified
Developer Guide¶
This guide is for developers who want to work on KeY or build on top of it. (If you want to use KeY to verify programs, see the User Guide instead.)
How this guide is organized¶
- Architecture — how the code base is organized into Gradle modules and where the important packages live. Read this first.
- Building KeY — checking out, building, running, and testing KeY with Gradle.
- Working on the Code — coding conventions,
automatic formatting with Spotless, and
logging; see also
CONTRIBUTING.mdin the repository. - Extending KeY — the central chapter for adding functionality. It starts with a decision table ("I want to add …") and contains compiled, verified How-Tos for the most common tasks: a new extension module, a menu entry, a toolbar, taclets, a proof macro, and a script command. In-depth references: writing taclets, polarity triggers, GUI extension points, script commands, SMT solvers, and event listeners.
- Using KeY as a Library — KeY in external projects and the JSON-RPC interface.
- Internals — background on selected subsystems: the rule application pipeline (taclet matching → strategy evaluation → application), proof loading/saving, the KeY parser, SMT translation, and counterexample generation.
- Testing — unit tests,
RunAllProofs, proved rules, CI. - Writing Documentation — how to contribute to this site.
Dependencies worth knowing¶
- JavaParser — parsing of Java sources
(
de.uka.ilkd.key.java.JavaService) - ANTLR 4 — parsing of
.keyfiles and JML - Docking Frames — UI layout of the main window
- SLF4J/Logback — logging