Configuration DSL
STIG configuration is intentionally layered. Most projects should put common policy in project-level defaults and only override element-specific values in element modules.
Ownership
STIG defines the DSL, defaults, and inheritance behavior. The consumer project owns the concrete values: repositories, source profiles, element groups, native targets, analysis boundaries, and severity thresholds.
Configuration Levels
Configuration is resolved from broad to narrow:
project defaults;
group defaults;
source-profile defaults where applicable;
element overrides.
This is the standard STIG pattern: put the common behavior once, then override only the values that genuinely differ for a module.
Project-Level Configuration
Project-level configuration usually lives in the root build and declares:
repository roots;
source profiles;
element groups such as
activities,components, orclusters;default ASIL or failure thresholds;
common analyzer-input and analyzer-execution settings;
common native build defaults.
Use project-level defaults for organization-wide policy and repeated settings.
Module-Level Configuration
Each element module has a stig { element { ... } } block. Keep it short:
assign the group;
set the source profile only when it differs from the group default;
set the native build target;
set implementation namespace/class names;
set module-specific topics, annotations, harness files, compilation units, and rewrite rules.
Avoid copying the full reference configuration into every module. Repetition makes later changes harder to review.
Override Rules
An unset element property inherits the value from the nearest wider level. A property set at the element level overrides only that property. For list-like properties, use the DSL's explicit clearing or replacement form when you intend to remove inherited values; otherwise inherited values may still apply.
References
Use these pages for the exact DSL fields:
Dokka API reference for
com.stigway.engine.config