Песочница

Проверка отчётов других движков

Проверьте сохранённый отчёт внешнего движка по выбранным исходнику, результату, связанным файлам и ожидаемым условиям выполнения.

Преобразование кода и сохранённые отчёты

Лена Код представляет собой платформу анализа кода на основе детерминированного конвейера. Понимайте, улучшайте и преобразовывайте свой код на 30 языках. Explain и Review помогают разобраться в коде и провести ревью на его исходном языке. Convert преобразует код на выбранный язык.

Для преобразования вставьте код в редактор исходника, выберите доступный целевой язык и просмотрите код в редакторе результата. Перед началом проверьте, какие языки доступны в рабочем пространстве.

Техническая основа Лены Код включает собственный диалект Лиспа Lena и Facet IR, промежуточное структурное представление кода. Команда разработала инструменты анализа и преобразования кода, интерпретаторы и корпус проверок. Эти технологии лежат в основе анализа, генерации и преобразования кода, а также детерминированной проверки результатов.

В примере ниже проверяется сохранённый отчёт о преобразовании TypeScript в Python, поставляемый с Лиспексом. Идентификатор lena-gate-proof обозначает связанный файл примера. Для другого преобразования получите исходник, результат, связанные файлы и отчёт vouch.bridge-report/v0 от инструмента, который его выполнил.

Подготовьте npm CLI Лиспекса и Node.js. В NPM_CLI укажите путь к bin/lispex.js установленного пакета. Эта страница использует npm-команду verify-bridge для отчётов преобразования.

Подготовьте готовый пример

Откройте корень исходного репозитория Лиспекса. Все входные файлы целиком находятся в examples/vouch-bridge.

Файл в этом каталогеНазначение
source/checkout-discount.tsИсходник TypeScript
target/checkout_discount.pyРезультат на Python
linked/lena-gate-proof.jsonСвязанный файл с идентификатором lena-gate-proof
reports/checkout-discount.bridge.jsonСохранённый образец отчёта vouch.bridge-report/v0
context/checkout-discount.context.jsonОжидаемые получателем профиль, случай и способ выполнения

Используйте предоставленные байты вместе с переводами строк. Сохраняйте результаты команд вне каталога примера. Упражнение читает сохранённый образец; поля движка и проверок содержат заявления этого отчёта. Для собственного преобразования получите исходник, результат, связанные файлы и отчёт от внешнего движка. Независимо выберите ожидаемый контекст до изучения результата.

Исходник и результат вычисляют скидку 15, 10 или 0 в зависимости от уровня клиента и промежуточной суммы. Ожидаемый контекст выбирает случай checkout-discount-ts-to-python и способ checked-expression-route. Он задаёт профиль vouch.conversion-evidence-profile/v0 и перечисленные операции с функциями, условиями, сравнениями и целыми числами.

Проверьте выбранные файлы

SH
node "$NPM_CLI" verify-bridge \
  --source examples/vouch-bridge/source/checkout-discount.ts \
  --target examples/vouch-bridge/target/checkout_discount.py \
  --linked lena-gate-proof=examples/vouch-bridge/linked/lena-gate-proof.json \
  --expect-context examples/vouch-bridge/context/checkout-discount.context.json \
  examples/vouch-bridge/reports/checkout-discount.bridge.json \
  > bridge-verified.json

Команда завершается с кодом 0 и записывает bridge-verified.json в формате vouch.bridge-verify-report/v0. В stderr появляется:

bridge report is artifact-consistent

Полные объекты checks и summary из результата:

JSON
{
  "checks": {
    "recomputed": [
      "source",
      "target",
      "linked_artifact:lena-gate-proof"
    ],
    "recorded_only": []
  },
  "summary": {
    "status": "pass",
    "exit_code": 0,
    "failure_count": 0
  }
}

Лиспекс прочитал три предоставленных файла и сравнил их хеши с отчётом. Он также проверил длины исходника и результата, структуру отчёта, объявленные итоги проверок и ожидаемый контекст. Получатель решает, какие движок, способ выполнения и свидетельства принять. Внешний движок создаёт результат и выполняет объявленные проверки.

Посмотрите, зачем нужны флаги файлов

Отдельно прочитайте только отчёт:

SH
node "$NPM_CLI" verify-bridge \
  examples/vouch-bridge/reports/checkout-discount.bridge.json \
  > bridge-record-only.json

Эта команда тоже завершается с кодом 0 и печатает bridge report is artifact-consistent в stderr. В summary остаётся pass, но checks теперь содержит:

JSON
{
  "recomputed": [],
  "recorded_only": [
    "source",
    "target"
  ]
}

В этом вызове Лиспекс проверил записанную структуру и заявления. recorded_only указывает значения исходника и результата, взятые из отчёта. Для проверки самих файлов используйте --source, --target и --linked. Для проверки выбранных профиля, случая и способа выполнения используйте --expect-context.

Прочитайте заявления отчёта

Поле отчётаСодержимое
subject.source, subject.targetЯзык, путь, длина в байтах и хеш
engineИмя, версия и коммит движка
subject.routeСпособ выполнения, профиль и поддерживаемые операции
checksОбъявленные результаты pass, fail, not-run и связанные хеши
linked_artifactsИдентификаторы и хеши связанных файлов
boundary.attests, boundary.excludesНаблюдения отчёта и обязанности движка или приложения

--linked <id>=<file> выбирает файл для объявленного связанного идентификатора. --expect-context <file> читает vouch.bridge-context-manifest/v0. Команда проверяет соответствие сводки объявленным количеству и результатам проверок. Если проверка имеет статус fail или not-run, сводка этого отчёта должна иметь статус fail.

Код 0 означает успешную проверку предоставленных данных. Код 1 сообщает о неуспешной проверке или объявленной сводке fail; прочитайте summary и diagnostics. Код 2 обозначает ошибку использования, чтения файла или разбора JSON.

Выберите следующую команду по типу файла

Команда npm verify-bridge читает отчёты преобразования и проверяет их привязку к выбранным файлам. Native verify-bridge принимает отчёт выполнения другого формата с явными параметрами профиля, движка, исходника и входа. Используйте входной формат нужной команды.

Нативные отчёты дифференциального сравнения имеют формат csk.differential-receipt/v0. Команда npm lispex verify проверяет эти отчёты, а npm vouch replay сравнивает сохранённые наборы случаев. Аутентификация подписи Ваучера и новая проверка допуска в Native используют собственные входные пакеты и политики. Вызывающее приложение разрешает внешние действия.

Ваучер Лиспекса · Сравнение записанных случаев · Отчёты Ваучера