Документация → Руководство по CLI

Руководство по CLI — stval

stval — бесплатный портативный валидатор ST-кода для командной строки. Это тот же разбор, что выполняет редактор: реальный парсер OWEN Logic. Инструмент поставляется одним self-contained файлом stval.exe и не требует установленного .NET Runtime.

Требования и поиск библиотек OWEN Logic

Для разбора кода нужен StParser.dll. Библиотеки OWEN Logic не распространяются вместе с stval (это запрещено лицензией OWEN), поэтому инструмент ищет их так:

  1. переменная окружения OWEN_LOGIC_ST_DIR, если задана;
  2. иначе — папка рядом с stval.exe, если в ней есть StParser.dll (портативный режим);
  3. иначе — установленный OWEN Logic: C:\Program Files\Owen\OWEN Logic\ST, затем %LOCALAPPDATA%\Programs\Owen\OWEN Logic\ST.

Каталог можно задать явно ключом --stdir. Если библиотека не найдена, инструмент завершится с кодом 2 и подсказкой.

Запуск

stval [--json] [--tokens] [--stdir <каталог ST>] <file.st> [files...]

Самый простой случай:

stval program.st

Ключи

КлючНазначение
--jsonМашиночитаемый отчёт в stdout (удобно для скриптов и CI).
--tokensДамп токенов лексера — для отладки разбора.
--stdir <каталог>Явно указать каталог ST OWEN Logic (где лежит StParser.dll).

Коды выхода

КодЗначение
0Ошибок нет.
1Найдены ошибки: синтаксические и неизвестные типы.
2Ошибка запуска: неверные аргументы, файл не найден, нет StParser.dll, исключение парсера.

Точное число ошибок смотрите в тексте отчёта или в JSON-поле totalErrors.

Форматы отчёта

Текстовый вывод:

FILE: program.st
ERRORS: 2
  line 12, col 5: ...
  line 20, col 9: ...

JSON (--json) — удобно разбирать скриптами:

{
  "ok": false,
  "totalErrors": 2,
  "parserExceptions": 0,
  "stDir": "C:\\Program Files\\Owen\\OWEN Logic\\ST",
  "files": [
    {
      "file": "program.st",
      "ok": false,
      "errors": [
        { "line": 12, "column": 5, "message": "..." }
      ],
      "parserException": null
    }
  ]
}

Проверка нескольких файлов

Несколько файлов в одной команде проверяются как один проект: FUNCTION_BLOCK из любого файла доступен как тип во всех остальных. Это повторяет поведение OWEN Logic.

stval motor.st logic.st common.st

Пример для CI

Проверка каталога сборки и остановка конвейера при ошибках (PowerShell):

$files = Get-ChildItem .\src -Filter *.st | ForEach-Object { $_.FullName }
stval --json @files > report.json
if ($LASTEXITCODE -ne 0) { throw "ST-код содержит ошибки (см. report.json)" }

Скачать stval.exe можно бесплатно в разделе «Скачать».