Проверки¶
Проверки и зависимости¶
Каждая проверка включается в [checks]: on, auto (по умолчанию) или off. Если зависимости нет, то:
- в режиме
onпрогон завершается сбоем инфраструктуры (код 2) с названием недостающего; - в режиме
autoпроверка не выполняется, а сводка, JUnit (skipped) и Problems пишут «не проверено» с причиной и с тем, что теряется; - в режиме
offпроверка не выполняется, в сводке остаётся одна строка «выключено настройкой».
| Проверка | Что | Нужно |
|---|---|---|
metadata |
ссылки на метаданные, формы, обработчики, экспортные методы; зависимые модули (вызовы изменённых экспортов) — off выключает и их пробы |
— |
analyzers |
новые замечания анализатора BSL по правке | BSL LS или bsl-analyzer (environment.analyzer) |
platform-api |
методы и типы платформы, доступность по контексту | справка установленной платформы |
probes-server |
компиляция на сервере и во внешнем соединении | копия ИБ; COM или YAxUnit |
probes-client |
компиляция в тонком клиенте | копия ИБ, YAxUnit |
queries |
разбор запросов платформой | копия ИБ; COM или YAxUnit |
extcheck |
расширенная проверка изменённых модулей: общих, в выгрузке Конфигуратора — и управляемых форм, объектов, менеджеров, наборов записей; все режимы, включая веб-клиент | копия ИБ |
scenarios |
сценарные тесты по изменённым методам | копия ИБ, YAxUnit |
smoke |
открытие изменённых форм | копия ИБ, YAxUnit |
otk doctor показывает, что найдено на машине, какие проверки доступны и что теряется без остальных.
Недоступна проверка в режиме on — doctor завершается с кодом 2.
Справку синтакс-помощника для platform-api ОТК индексирует сам из установленных платформ (несколько секунд
при первом обращении; изменились .hbk — индекс перестраивается). Своей версии нет — берётся индекс в кэше или
ближайшая версия той же линейки, о подмене — примечание в сводке. Серверу без клиента (.hbk нет) — копия
справки в environment.helpDir (каталог с именем версии) или otk platform-help build --from <каталог с .hbk>
[--version 8.3.27.2342]; otk platform-help status — какие индексы есть и актуальны ли. helpAuto = false —
индекс сам не строится (воспроизводимый CI), вместо этого предупреждение с командой.
Доступность методов, свойств и типов (Новый …) по контекстам (сервер, клиент, внешнее
соединение, веб-клиент) берётся
из таблиц, построенных Конфигуратором: в поставке 8.3.27, 8.5.1 и 8.5.4; для другой платформы берётся ближайшая
таблица той же линейки. Точную строит otk availability build: временное расширение в копии ИБ проекта,
около минуты. Индекс и таблицы лежат в кэше пользователя: OTK_CACHE, иначе %LOCALAPPDATA%/otk
или ~/.cache/otk.
Как добавить свою проверку (исполнитель в базе или правило статики) — adding-a-check.md; коды находок и как их исправить — справочник находок.
Без YAxUnit полная проверка работает: сервер и запросы проверяются через COM, а тонкий клиент, формы и сценарии получают «не проверено».
Анализаторы BSL¶
Какие замечания BSL LS — ошибки, а какие предупреждения, — «Сводка и коды выхода»; что ловит каждый анализатор на контрольных дефектах — comparison.md.
Проверка analyzers работает через адаптер: environment.analyzer = "bslls" (BSL LS, по
умолчанию), "bsl-analyzer" или "both" (--analyzer). bsl-analyzer видит всю конфигурацию: «после» — дерево
выгрузки целиком (у расширения — с основной конфигурацией из parent), разбор ограничен изменёнными модулями;
«до» — зеркало дерева на ссылках, где изменённые модули возвращены к базе (исходники не меняются). Поэтому
кроме общих правил он ловит новый вызов несуществующего метода, неверное число аргументов, неизвестное поле,
поле запроса, серверный метод на клиенте (bsla:<Правило>, пока предупреждения; сделать ошибкой —
[analyzerSeverity]), а старые такие замечания
модуля новыми не считает. Родной файл настроек анализатора ОТК пишет сам во временный каталог: за основу —
bsl-analyzer.toml или .bsl-language-server.json репозитория, поверх — minPlatform и compatWarnings
из otk.toml; своего файла нет — критические правила и семантика. При both одно замечание обоих
анализаторов — одна находка, замечания только одного из них подсчитаны в примечаниях. Выбор можно задать по
формату выгрузки: [environment.analyzer] с ключами designer-xml и edt (формата нет в таблице —
bslls; --analyzer задаёт выбор для всех форматов). Какие форматы понимает анализатор, ОТК знает сам:
bsl-analyzer 0.3.2 — только designer-xml (метаданные .mdo не читает, на защищённых модулях падает),
поэтому при both на EDT работает один BSL LS (с примечанием), а явный bsl-analyzer для EDT —
«не проверено» с причиной.
Правила BSL LS по событиям (EventHandlerInvalidSignature, EventHandlerOutsideEventRegion) работают только со
справкой платформы (shcntx_ru.hbk). ОТК передаёт анализатору справку платформы проверки
(environment.platform или установленная), иначе — копию из environment.helpDir; ключ v8platform.binPath
своей .bsl-language-server.json главнее. Без справки (Linux без платформы, контейнер) эти правила не работают —
об этом примечание в сводке.
Сценарные тесты¶
Тесты на логику пишет пользователь — обычные тесты YAxUnit в
тестовом расширении проекта tests/cfe/<имя> (выгрузка Конфигуратора; эту же раскладку показывает панель
тестов VS Code «1C: Platform Tools»). ОТК их не придумывает, а выбирает: тест привязывается к методу
тегом с полным именем метода — ИмяОбщегоМодуля.Метод (для других модулей — Справочник.Клиенты.Метод),
тег модуля — его имя:
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("СхемаHttpЗаменяетсяНаHttps", "http:// -> https://",
"демо_КлиентСервер.НормализованнаяСсылкаНаЗапись")
.ДобавитьТест("ПроведениеДокумента").Тег("Документ.Продажа.ОбработкаПроведения")
.ВТранзакции();
КонецПроцедуры
gate запускает только тесты с тегами изменённых методов (фильтр tags YAxUnit), --all-scenarios — все;
тестов к изменению нет — «0 сценариев», клиент не запускается. Тестовые расширения загружаются в свою копию ИБ
ОТК (повторно — только при изменении). Данные тест не должен оставлять: ВТранзакции(),
УдалениеТестовыхДанных() YAxUnit. Упавший тест — ошибка сводки с местом в тестовом модуле и текстом
утверждения. Каталог — [scenarios] path (по умолчанию tests/cfe). В рабочую базу хуком Platform Tools
сценарии не ставятся.
Движок YAxUnit ОТК ставит в свою копию ИБ сам (environment.yaxunit). Исходники движка, которые кладёт
команда Platform Tools «Добавить YAxUnit» (tests/cfe/YAXUNIT), и расширения без тестов при поиске сценариев
пропускаются; tests/cfe/YAXUNIT удобно внести в .gitignore. Чтобы запускать тесты из панели тестов VS Code,
в базу профиля нужно загрузить движок и тестовое расширение («Загрузить тестовые расширения») — без движка 1С
открывается и ждёт, отчёта нет.
Заготовки тестов¶
otk scaffold [--base <ref>] [--head <ref>] [--extension <имя>] [--no-draft] — изменённым методам (по
умолчанию: рабочее дерево с незакоммиченным против [hook] base), у которых нет теста с их тегом, добавляет
каркас теста в тестовое расширение: регистрацию ЮТТесты.ДобавитьТест(…, "<Модуль>.<Метод>") и процедуру с
подсказкой вызова. Тестовый модуль — <префикс тестового расширения><имя модуля> (одноимённый модуль
дополняется, существующие процедуры не трогаются); тестового расширения нет — создаётся tests/cfe/Тесты.
Каркас помечен ЮТест.Пропустить, пока тест не написан: в сводке gate он «не проверено», а не «пройдено».
Черновик вместо пустого каркаса — внешняя команда [scaffold] draft (лучше в otk.local.toml): на stdin
она получает JSON о методе (модуль, имя, параметры, контексты, текст метода), на stdout возвращает тело
процедуры теста. ОТК ИИ не встраивает — пример для Claude Code:
scaffold/draft-claude.py; подойдёт любой инструмент с тем же протоколом.
Ошибка команды — пустой каркас.
Дымовой тест форм¶
Изменённые управляемые формы — изменён модуль формы или её Form.xml — ОТК открывает и закрывает в
тонком клиенте своей копии ИБ (отдельным запуском клиента после проб). Ловится то, чего не видно без открытия:
ошибки в обработчиках ПриОткрытии, ПриЗакрытии и вызываемом из них коде (платформа не передаёт их в
Открыть(), а пишет в журнал регистрации — ОТК берёт их оттуда по кадру формы в стеке), а также форма,
которая не закрывается: модальное окно, вопрос пользователю, долгий обработчик. Такую форму ОТК ждёт
[smoke] timeout секунд (по умолчанию 60), завершает клиент и проверяет оставшиеся формы новым запуском.
- Форма, которая без параметров отказывается открываться (
ОтказвПриСозданииНаСервере), — «не проверено». - Ошибка при открытии — ошибка сводки (
[smoke] severity = "warning"— предупреждение). [smoke] exclude— шаблоны полных имён форм, которые не открывать ("Обработка.*","*.ФормаНастроек");[checks] smoke = "off"— выключить.- Форма открывается с данными копии ИБ: обработчики, зависящие от данных или настроек, ведут себя как в
этой базе. Копия без начального заполнения (пустая база, первый запуск не выполнен) даёт ложные ошибки: на
пустой 1С:ERP формы документа и справочника не открываются («Не удалось заполнить поле "Организация"»,
«Преобразование значения к типу Булево»). Для дымового теста берите копию с заполненной базой или ставьте
[smoke] severity = "warning".