Преобразование кода и сохранённые отчёты
Лена Код представляет собой платформу анализа кода на основе детерминированного конвейера. Понимайте, улучшайте и преобразовывайте свой код на 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 и перечисленные операции с функциями, условиями, сравнениями и целыми числами.
Проверьте выбранные файлы
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 из результата:
{
"checks": {
"recomputed": [
"source",
"target",
"linked_artifact:lena-gate-proof"
],
"recorded_only": []
},
"summary": {
"status": "pass",
"exit_code": 0,
"failure_count": 0
}
}Лиспекс прочитал три предоставленных файла и сравнил их хеши с отчётом. Он также проверил длины исходника и результата, структуру отчёта, объявленные итоги проверок и ожидаемый контекст. Получатель решает, какие движок, способ выполнения и свидетельства принять. Внешний движок создаёт результат и выполняет объявленные проверки.
Посмотрите, зачем нужны флаги файлов
Отдельно прочитайте только отчёт:
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 теперь содержит:
{
"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 используют собственные входные пакеты и политики.
Вызывающее приложение разрешает внешние действия.
Ваучер Лиспекса · Сравнение записанных случаев · Отчёты Ваучера