Contributing
Prerequisites
- Java 21 (see
.java-version) - Lefthook for local git hooks
One-time setup
Install Lefthook and register the git hooks:
bash
# macOS
brew install lefthook
# Other platforms: https://github.com/evilmartians/lefthook#installationbash
lefthook installThis installs a pre-push hook that runs :bpmn-to-code-core:jacocoTestCoverageVerification — the same check enforced in CI.
Common Commands
bash
./gradlew build # full build
./gradlew :bpmn-to-code-core:test # run core tests only
./gradlew :bpmn-to-code-core:jacocoTestCoverageVerification # check coverage manuallySkipping hooks
bash
git push --no-verify # bypasses lefthook; CI still enforcesExploring the codebase (optional)
The core follows a hexagonal architecture across several modules (domain → application → adapter). To navigate the relationships instead of grepping, some contributors use Graphify, which builds a local knowledge graph from the source (Kotlin included, AST-only, no API key required):
bash
uv tool install graphifyy # or: pipx install graphifyy
graphify extract . --code-only # local, ~5s, writes graphify-out/
graphify god-nodes # most-connected architectural hubs
graphify affected "SomeType" # what a change would impactThis is purely an optional exploration aid — it is not a build or contribution requirement, and its output (graphify-out/) is git-ignored.