Анализ кода 1С через AI: от линтера до графа зависимостей
- анализ кода
- 1c
- bsl
- рефакторинг
Анализ кода 1С через AI: статический линтер BSL, проверка антипаттернов, граф зависимостей и иерархия вызовов методов в Расширенной и Профессиональной редакциях MCP-1C.
MCP-1C добавляет MCP-клиенту инструменты статического анализа кода BSL. AI видит метаданные вашей конфигурации, а инструменты анализа отдают точные факты о коде: диагностики линтера, антипаттерны запросов, связи между модулями. Состав инструментов зависит от редакции: линтер и проверка антипаттернов доступны в Расширенной, граф зависимостей и иерархия вызовов методов добавляются в Профессиональной.
Линтер BSL: первый слой
Инструмент code_analyze относится к Расширенной редакции и умеет три действия. Базовое для повседневной работы это check: проверка кода BSL на типичные ошибки и антипаттерны. Под капотом работает линтер BSL, который покрывает около 30 диагностик. В Открытой редакции этого инструмента нет, он доступен только в Расширенной и Профессиональной.
Действие explain идёт глубже: это полный статический анализ кода BSL шестью анализаторами: сложность, ошибки, стиль, производительность, безопасность, совместимость.
Третье действие, compatibility, отвечает на отдельный вопрос: переживёт ли код переход на другую версию платформы. Оно строит матрицу совместимости и подсвечивает breaking changes между версиями 1С.
code_analyze action=check -> диагностики линтера BSL
code_analyze action=explain -> разбор шестью анализаторами
code_analyze action=compatibility -> матрица совместимости и breaking changes
Оптимизатор запросов
Для запросов есть отдельный инструмент. Оптимизатор запросов в Расширенной редакции (code_generate, действие optimize_query) выполняет статический анализ запроса на 15 антипаттернов производительности.
Граф зависимостей и иерархия вызовов
Линтер смотрит на код в пределах одного модуля. Чтобы увидеть связи по всей конфигурации, в Профессиональной редакции к code_analyze добавляются действия dependency_graph, call_hierarchy, arch_boundary, find_modules и graph_query. Это навигация по структуре проекта: связи между объектами метаданных и иерархия вызовов методов, а не проверка отдельного файла.
Два центральных инструмента работают на разных уровнях, и это важно не путать:
dependency_graphвизуализирует связи между объектами метаданных конфигурации;call_hierarchyстроит иерархию вызовов на уровне методов (кто вызывает метод и кого вызывает он).
Граф зависимостей между объектами
dependency_graph принимает обязательный параметр object и набор уточнений:
| Параметр | Значения |
|---|---|
object |
обязательный, объект метаданных |
direction |
reverse / forward / both |
depth |
1-3 |
format |
text / json / mermaid |
edge_types |
movement / query / call / subscription и др. |
min_risk |
low / medium / high |
path_glob |
фильтр по путям |
Формат mermaid удобен тем, что граф можно сразу вставить в документацию или в чат и увидеть картинку, а не текст.
Иерархия вызовов методов
call_hierarchy отвечает на вопрос «что сломается, если я трону этот метод». Обязательный параметр это method в форме Объект.Метод или Тип.Объект.Метод, например ОбщийМодуль.Расчёты.Пересчитать. Дальше задаются direction (reverse / forward / both), depth (по умолчанию 2) и format (text / json).
Здесь важна честная граница: результат неполный по дизайну. Учитываются только квалифицированные вызовы вида Модуль.Метод(). Вызовы без префикса модуля и динамические вызовы через Выполнить или ЗапуститьМетод в иерархию не попадают. Это особенность статического разбора, и о ней лучше знать заранее, чтобы не принимать пустую ветку за отсутствие вызовов.
Как запустить графовые инструменты
Графовые действия dependency_graph и call_hierarchy требуют предварительно построенного графа зависимостей, поэтому работа идёт в два шага. Сначала разовая сборка кэша: запуск с флагом --build-depgraph строит граф по выгрузке конфигурации (--dump). Затем постоянный MCP-сервер запускается с флагом --enable-depgraph (вместе с --dump), который включает отдачу графовых инструментов при работе сервера. В целом большинство возможностей Профессиональной редакции опираются на предварительное построение кэша или разовую генерацию, поэтому первая сборка занимает дольше обычного.
# Шаг 1: разовая сборка кэша графа
mcp-1c-pro --dump "/Users/me/bases/acc-dump" --build-depgraph
# Шаг 2: постоянный MCP-сервер с отдачей графовых инструментов
mcp-1c-pro \
--dump "/Users/me/bases/acc-dump" \
--enable-depgraph
Транспорт по умолчанию это stdio: MCP-клиент сам запускает бинарник mcp-1c-pro и общается с ним через stdin и stdout, без отдельных портов. Для анализа по выгрузке достаточно флага --dump с путём к выгрузке конфигурации, отдельная база не нужна. Если требуется живая база, флаг --base повторяется для каждой базы в формате NAME=URL, где URL это HTTP-адрес опубликованного HTTP-сервиса mcp-1c в 1С (например http://localhost:8080/hs/mcp-1c); схема poll:// объявляет polling-базу. Если инструмент внутри обращается к LLM, ключи (например YANDEXGPT_API_KEY) задаются в секции env.
Claude Desktop поддерживает протокол MCP из коробки. Клиент сам запускает сервер (шаг 2), поэтому в mcpServers указывается --enable-depgraph, а кэш графа должен быть собран заранее (шаг 1). Сервер прописывается с ключами command, args и env:
{
"mcpServers": {
"mcp-1c": {
"command": "/usr/local/bin/mcp-1c-pro",
"args": [
"--dump", "/Users/me/bases/acc-dump",
"--enable-depgraph"
]
}
}
}
Путь к конфигу зависит от ОС: на macOS это ~/Library/Application Support/Claude/claude_desktop_config.json, на Windows %APPDATA%\Claude\claude_desktop_config.json. Claude Desktop официально поставляется только для macOS и Windows. Подробности подключения собраны в разделе документации.
Справка по синтаксису
Анализ часто упирается в вопрос «а как правильно вызвать эту функцию». Открытый инструмент bsl_syntax_help даёт справку по 180 встроенным функциям и методам языка 1С (BSL) и работает в любой редакции. В платных редакциях подключается полная справка по синтаксису платформы: около 10000 определений из .hbk-файлов.
Что в какой редакции
| Возможность | Редакция |
|---|---|
bsl_syntax_help (180 функций) |
Открытая |
code_analyze: check, explain, compatibility |
Расширенная |
| Линтер BSL (около 30 диагностик) | Расширенная |
| Оптимизатор запросов (15 антипаттернов) | Расширенная |
dependency_graph, call_hierarchy, arch_boundary, find_modules, graph_query |
Профессиональная |
| Полная справка платформы (около 10000 определений) | платные редакции |
Поддерживаются версии платформы 1С 8.3.x и 8.5.x, коммерческие и учебные. Корпоративная редакция (для нескольких пользователей на общем сервере) сейчас в разработке. Сравнение редакций и цены собраны на странице тарифов, а общий обзор продукта на главной.