OxL Справочник OxL
РусскийEnglish

III.4 Статический анализатор

Выполняется в oxl check, oxl build и LSP. Ошибки (E) отменяют сборку; предупреждения (W) настраиваются в [lint].

КодУровеньПроверка
schema-breakEломающее изменение схемы (§9.2)
sendEнепередаваемое значение уходит в другую задачу (§7.3)
effectsEвызов функции с недопустимым эффектом (§6.2)
unhandled-errorEнеобработанный результат с ошибкой (§6.5)
retry-unsafeE@retry без @idempotent/@readonly
saga-idempotencyEшаг или компенсация саги без @idempotent
missing-policyErpc никому не доступен: нет allow/@public/@internal и внутренних вызовов (§13.4)
unhostedEсервис, актор, топик или сага без роли (§12.1)
magic-literalWодинаковый литерал длительности, размера, числа повторов или лимита встречается в атрибутах или аргументах 2+ раз — вынести в const (часть IV)
n-plus-oneWзапрос в цикле по результату другого запроса
scatter-gatherWзапрос к шардированной таблице без ключа шарда
durable-non-idempotentWнадёжный шаг пайплайна вызывает неидемпотентный rpc
actor-cycleWвозможное циклическое ожидание акторов
secret-leakEsecret.reveal() попадает в лог, строку или ответ
blocking-in-taskWблокирующий FFI-вызов без blocking
time-mixEсмешение видов времени (§17.2)
unusedWнеиспользуемые импорты, переменные, dep
must-closeEзначение типа с @must_close может выйти из области видимости без close() или передачи владения (§4.3)

Пользовательские правила — comptime-функции над AST (std.comptime), подключаются в [lint] plugins.

Подавление на объявлении: @allow(lint: правило, reason: "причина") на любом объявлении (элемент, метод, поле, вариант, rpc, msg) отключает правило для всего объявления (атрибуты, сигнатура, тело). правило — имя из таблицы выше, код диагностики или правило плагина; reason обязателен и непуст (bad-allow); неизвестное правило — unknown-lint; правило, нарушение которого — ошибка (E), подавить нельзя (bad-allow) (D-8064; D-7830).

Определяется реализацией. Плагины анализатора (D-8056; DIV-043; HANDOFF §3). Эта реализация показывает плагинам выражения плоско, без вычисленных типов.

bad-allow, lint-plugin, missing-policy, n-plus-one, unknown-lint, unused

Исходник: docs/spec/oxl-standard.md