This document helps AI coding agents work effectively with the DSL DevKit codebase.
- Type: Multi-module Tycho/Eclipse/OSGi project
- Purpose: DSL development toolkit built on Xtext
- Java: 21+
- Maven: 3.9+
- Tycho
- Xtext/Xtend
| Directory | Purpose |
|---|---|
ddk-parent/ |
Parent POM, build entry point |
ddk-configuration/ |
Quality tool configs (PMD, Checkstyle, SpotBugs) |
ddk-target/ |
Eclipse target platform definition |
ddk-repository/ |
P2 update site |
com.avaloq.tools.ddk.* |
Source modules |
*.test |
Test modules |
# Full CI build (Linux - requires xvfb for UI tests)
xvfb-run mvn clean verify checkstyle:check pmd:pmd pmd:cpd pmd:check pmd:cpd-check spotbugs:check -f ./ddk-parent/pom.xml --batch-mode --fail-at-end
# Windows build
mvn clean verify -f ./ddk-parent/pom.xml
# Quick build without tests
mvn clean verify -f ./ddk-parent/pom.xml -DskipTests
# Build specific module
mvn clean verify -f ./ddk-parent/pom.xml -pl :com.avaloq.tools.ddk.xtext
# Run only quality checks (after initial build)
mvn checkstyle:check pmd:check spotbugs:check -f ./ddk-parent/pom.xmlImportant: Set WORKSPACE environment variable to project root before building:
export WORKSPACE=$(pwd)- Ruleset:
ddk-configuration/pmd/ruleset.xml - Excludes:
src-gen/,src-model/,xtend-gen/
- Config:
ddk-configuration/checkstyle/avaloq.xml - Test config:
ddk-configuration/checkstyle/avaloq-test.xml - Only checks
src/directory
- Exclusions:
ddk-configuration/findbugs/exclusion-filter.xml - Max rank: 15, Threshold: Low
- Framework: JUnit 5 with Tycho Surefire
- Timeout: 30 minutes (1800 seconds)
- Main test module:
com.avaloq.tools.ddk.xtext.test - UI tests: Require virtual display (xvfb on Linux)
Tests are disabled by default and activated only in test bundles.
- Use
META-INF/MANIFEST.MFfor OSGi bundle dependencies (not pom.xml)
These directories contain generated code - do not edit manually:
src-gen/- Xtext generated sourcessrc-model/- EMF model generated sourcesxtend-gen/- Xtend transpiled Java sources
.xtendfiles insrc/compile to Java inxtend-gen/
- Create module directory with standard structure
- Add
META-INF/MANIFEST.MFfor OSGi metadata - Add
build.propertiesfor Tycho - Add module to
ddk-parent/pom.xmlmodules list - Follow naming convention:
com.avaloq.tools.ddk.<component>
- Check ruleset at
ddk-configuration/pmd/ruleset.xml - Violations in generated code (
src-gen/,xtend-gen/) are excluded - Run
mvn pmd:check -f ./ddk-parent/pom.xmlto verify fixes
- Check config at
ddk-configuration/checkstyle/avaloq.xml - Run
mvn checkstyle:check -f ./ddk-parent/pom.xmlto verify fixes
# Run tests for a specific module
mvn verify -f ./ddk-parent/pom.xml -pl :com.avaloq.tools.ddk.xtext.test
# On Linux, wrap with xvfb for UI tests
xvfb-run mvn verify -f ./ddk-parent/pom.xml -pl :com.avaloq.tools.ddk.xtext.test- Platform: GitHub Actions
- Workflow:
.github/workflows/verify.yml - Triggers on: push to master, pull requests