Code Diagnostics
MCP routing
- Диагностику узла даёт
unica.check {at}. Валидаторы следуют из вида узла:
у модуля это BSL-анализатор, у объекта метаданных — его собственные проверки.
Выбирать провайдера или действие не нужно и нечем: check принимает только
адрес.
- Ответ несёт
status (passed или failed), validators — какие проверки
отработали, и diagnostics — находки с кодом, важностью, местом и стандартом.
Провалом считается error, а не всякая пометка: подсказка по стилю модуль не
ломает.
- Пустой
diagnostics при status: passed — доказательство. Если анализ
не завершился, check отказывает provider_unavailable и прямо говорит, что
модуль не проверен. Отдельного вопроса о готовности провайдера больше нет:
чистый ответ и неотработавший провайдер теперь различимы по самому ответу.
- Адрес узла даёт
unica.view {at} по дереву или unica.search {corpus: "names"}
по имени. Если отправная точка — путь из диффа или лога сборки, переведи его
в адрес аварийным unica.resolve; в обычном ходе работы он не нужен.
- Стандарт v8std спрашивается только через
unica.docs с
source: "development-standard". Не зови анализатор, стандарты или пакетные
адаптеры напрямую.
- Код ищется
unica.search: role выбирает, чем искать — lexical буквально,
symbol по индексу символов, semantic по смыслу. Без role Unica ищет
литерал сама.
Чего на канонической поверхности пока нет
Называй это пробелом контракта, а не обходи стороной:
- сплошной прогон по всему набору —
check проверяет один адрес; обхода
всех модулей одним вызовом нет;
- отбор по важности и кодам, ограничение выдачи —
check принимает только
at;
- каталог правил провайдера — коды берутся из находок и из
unica.docs;
- граф вызовов для оценки влияния — ветвей
Caller/Callee у узла метода
ещё нет.
Workflow
- Получи адрес узла:
unica.view {} называет наборы исходников,
unica.search {corpus: "names"} находит объект по имени, unica.view {at}
спускается по дереву. У владельца есть ветвь Module, у модуля — Method.
- Вызови
unica.check {at} на модуле или объекте. Прочти status,
validators и diagnostics.
- Сгруппируй находки по месту, коду и первопричине. Иди за точным диапазоном
в самой находке.
- Разгляди предмет:
unica.view {at} на узле метода даёт подпись, контекст
компиляции и собственные строки; unica.search находит вхождения.
- Спроси стандарт:
unica.docs с source: "development-standard" по коду,
имени диагностики, токену АПК/EDT/BSL LS или соседнему фрагменту.
- Отчитайся: причина в исходнике, затронутые диагностики, логический адрес и
место, доказательство из стандарта, результат перепроверки.
Verification gate
This verification gate is mandatory:
- Проверяй
unica.check {at} после правок, чувствительных к синтаксису, и
считай новые находки важности error блокирующими.
- Оценивай влияние при изменении экспортного метода, обработчика метаданных,
публичного API, пути запроса или контракта общего модуля. Пока графа вызовов
на поверхности нет, доказательством служит
unica.search по имени символа —
и скажи, что доказательство неполное.
- Если публичный MCP
unica не может показать нужное доказательство, сообщи о
пробеле контракта вместо заявления о полной проверке.
Suppression and range-disable comments
Когда inline/range disable markers или suppression-комментарии отключают
диагностику строки или диапазона, считайте точный маркер частью доказательства.
- Extract literal rule codes from АПК, EDT, BSL LS, analyzer, or suppression comments.
- Explain an отключение only when the code, surrounding range, and standard support the reason.
- Prefer fixing the cause or narrowing the disabled range. Keep suppression only with standards, platform-help, or runtime evidence of an intentional false positive.
MCP examples
Проверка одного модуля:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.check",
"arguments": { "at": "main:CommonModule.Продажи" }
}
}
Стандарт за диагностикой:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.docs",
"arguments": {
"query": "АПК:142 LineLength",
"source": "development-standard"
}
}
}
Вхождения символа перед правкой общего кода:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.search",
"arguments": {
"query": "ПередЗаписью",
"role": "symbol",
"scope": "main:Configuration"
}
}
}
1---2name: code-diagnostics3description: Диагностика BSL и объяснение отключений правил. Используй, когда нужно запустить или разобрать диагностики BSL, АПК, EDT, BSL LS, inline/range disable markers, suppression-комментарии или стандарт v8std за диагностикой.4---56# Code Diagnostics78## MCP routing910- Диагностику узла даёт `unica.check {at}`. Валидаторы следуют из вида узла:11 у модуля это BSL-анализатор, у объекта метаданных — его собственные проверки.12 Выбирать провайдера или действие не нужно и нечем: `check` принимает только13 адрес.14- Ответ несёт `status` (`passed` или `failed`), `validators` — какие проверки15 отработали, и `diagnostics` — находки с кодом, важностью, местом и стандартом.16 Провалом считается `error`, а не всякая пометка: подсказка по стилю модуль не17 ломает.18- **Пустой `diagnostics` при `status: passed` — доказательство.** Если анализ19 не завершился, `check` отказывает `provider_unavailable` и прямо говорит, что20 модуль не проверен. Отдельного вопроса о готовности провайдера больше нет:21 чистый ответ и неотработавший провайдер теперь различимы по самому ответу.22- Адрес узла даёт `unica.view {at}` по дереву или `unica.search {corpus: "names"}`23 по имени. Если отправная точка — путь из диффа или лога сборки, переведи его24 в адрес аварийным `unica.resolve`; в обычном ходе работы он не нужен.25- Стандарт v8std спрашивается только через `unica.docs` с26 `source: "development-standard"`. Не зови анализатор, стандарты или пакетные27 адаптеры напрямую.28- Код ищется `unica.search`: `role` выбирает, чем искать — `lexical` буквально,29 `symbol` по индексу символов, `semantic` по смыслу. Без `role` Unica ищет30 литерал сама.3132### Чего на канонической поверхности пока нет3334Называй это пробелом контракта, а не обходи стороной:3536- **сплошной прогон по всему набору** — `check` проверяет один адрес; обхода37 всех модулей одним вызовом нет;38- **отбор по важности и кодам, ограничение выдачи** — `check` принимает только39 `at`;40- **каталог правил провайдера** — коды берутся из находок и из `unica.docs`;41- **граф вызовов для оценки влияния** — ветвей `Caller`/`Callee` у узла метода42 ещё нет.4344## Workflow45461. Получи адрес узла: `unica.view {}` называет наборы исходников,47 `unica.search {corpus: "names"}` находит объект по имени, `unica.view {at}`48 спускается по дереву. У владельца есть ветвь `Module`, у модуля — `Method`.492. Вызови `unica.check {at}` на модуле или объекте. Прочти `status`,50 `validators` и `diagnostics`.513. Сгруппируй находки по месту, коду и первопричине. Иди за точным диапазоном52 в самой находке.534. Разгляди предмет: `unica.view {at}` на узле метода даёт подпись, контекст54 компиляции и собственные строки; `unica.search` находит вхождения.555. Спроси стандарт: `unica.docs` с `source: "development-standard"` по коду,56 имени диагностики, токену АПК/EDT/BSL LS или соседнему фрагменту.576. Отчитайся: причина в исходнике, затронутые диагностики, логический адрес и58 место, доказательство из стандарта, результат перепроверки.5960## Verification gate6162This verification gate is mandatory:6364- Проверяй `unica.check {at}` после правок, чувствительных к синтаксису, и65 считай новые находки важности `error` блокирующими.66- Оценивай влияние при изменении экспортного метода, обработчика метаданных,67 публичного API, пути запроса или контракта общего модуля. Пока графа вызовов68 на поверхности нет, доказательством служит `unica.search` по имени символа —69 и скажи, что доказательство неполное.70- Если публичный MCP `unica` не может показать нужное доказательство, сообщи о71 пробеле контракта вместо заявления о полной проверке.7273## Suppression and range-disable comments7475Когда inline/range disable markers или suppression-комментарии отключают76диагностику строки или диапазона, считайте точный маркер частью доказательства.7778- Extract literal rule codes from АПК, EDT, BSL LS, analyzer, or suppression comments.79- Explain an отключение only when the code, surrounding range, and standard support the reason.80- Prefer fixing the cause or narrowing the disabled range. Keep suppression only with standards, platform-help, or runtime evidence of an intentional false positive.8182## MCP examples8384Проверка одного модуля:8586```jsonc87{88 "jsonrpc": "2.0",89 "method": "tools/call",90 "params": {91 "name": "unica.check",92 "arguments": { "at": "main:CommonModule.Продажи" }93 }94}95```9697Стандарт за диагностикой:9899```jsonc100{101 "jsonrpc": "2.0",102 "method": "tools/call",103 "params": {104 "name": "unica.docs",105 "arguments": {106 "query": "АПК:142 LineLength",107 "source": "development-standard"108 }109 }110}111```112113Вхождения символа перед правкой общего кода:114115```jsonc116{117 "jsonrpc": "2.0",118 "method": "tools/call",119 "params": {120 "name": "unica.search",121 "arguments": {122 "query": "ПередЗаписью",123 "role": "symbol",124 "scope": "main:Configuration"125 }126 }127}128```