validate
Run built-in validation rules against a Vijeo Designer project and report errors, warnings, and passed checks.
Description
The validate command checks a .zdat project file against a set of built-in rules. It catches common issues like orphaned variables, missing alarm text, unreachable panels, and naming convention violations. Use it in CI pipelines or before deployment to catch problems early.
Usage
glyphsix-hmi validate [options] <project.zdat>
Options
| Flag | Description | Default |
|---|---|---|
--format | Output format: text, json, yaml | text |
--rules | Comma-separated list of rule IDs to run | all |
--severity | Minimum severity to report: error, warn, info | warn |
--strict | Exit with code 1 on any warning or error | off |
--output, -o | Write output to a file | stdout |
--provider | Force a specific provider plugin | auto-detect |
Built-in rules
| Rule ID | Description |
|---|---|
orphaned-variable | Variables not referenced by any widget |
missing-alarm-text | Alarms without message text |
naming-convention | Variables not matching [A-Z].* pattern |
panel-nav-reachable | Panels unreachable from the main screen |
duplicate-address | Multiple variables mapped to the same address |
unused-panel | Panels with no navigation path |
widget-overlap | Overlapping widgets on the same panel |
script-syntax | Script syntax validation |
alarm-severity | Alarms without assigned severity |
variable-type-mismatch | Widget/variable type compatibility |
Examples
Run all rules:
glyphsix-hmi validate plant-hmi.zdat
Validating: plant-hmi.zdat
Running 10 rules...
WARN orphaned-variable PLC.OldSensor.Value is not used by any widget
WARN missing-alarm-text Alarm #14 has no message text
ERR naming-convention Variable "plc_pump1_status" does not match pattern [A-Z].*
PASS panel-nav-reachable All panels reachable from MainScreen
Results: 1 error, 2 warnings, 7 passed
Strict mode for CI:
glyphsix-hmi validate --strict --format json plant-hmi.zdat
{
"results": [
{ "rule": "orphaned-variable", "severity": "warn", "message": "PLC.OldSensor.Value is not used by any widget" },
{ "rule": "naming-convention", "severity": "error", "message": "Variable \"plc_pump1_status\" does not match pattern [A-Z].*" }
],
"summary": { "errors": 1, "warnings": 1, "passed": 8 },
"exit_code": 1
}