EDT Complexity Analyzer: анализ сложности BSL-кода прямо в среде разработки
Нативный плагин для 1C:EDT, который вычисляет цикломатическую и когнитивную сложность процедур и функций BSL, отображает метрики прямо в редакторе и предупреждает о превышении порогов сложности.
Что это за плагин
Это нативное расширение для 1C:EDT, которое анализирует сложность BSL-кода на основе AST-модели EDT. Плагин вычисляет цикломатическую и когнитивную сложность каждой процедуры и функции, показывает метрики прямо над объявлением метода в редакторе и создает предупреждения при превышении настраиваемых порогов.
При разработке на 1С важно контролировать сложность кода. Сложные методы труднее понимать, тестировать и поддерживать. Цикломатическая сложность показывает количество независимых путей выполнения, а когнитивная сложность измеряет, насколько трудно понять логику метода.
Ключевое преимущество - плагин работает непосредственно в EDT, используя встроенную семантическую модель BSL. Вам не нужны внешние анализаторы или дополнительные инструменты. Метрики отображаются прямо в редакторе над каждым методом.
Нативный анализ
Использует встроенную AST-модель EDT для точного вычисления метрик без внешних парсеров.
Inline-метрики
Показывает цикломатическую и когнитивную сложность прямо над объявлением каждого метода.
Настраиваемые пороги
Создает предупреждения при превышении настраиваемых порогов сложности.
Главное преимущество
Плагин интегрирован непосредственно в EDT и работает в реальном времени. Вы видите метрики сложности прямо во время написания кода, что помогает поддерживать качество кода на высоком уровне.
Основные возможности
Плагин предоставляет полный набор функций для анализа сложности:
- Вычисление цикломатической сложности (Cyclomatic Complexity) для каждого метода;
- Вычисление когнитивной сложности (Cognitive Complexity) для каждого метода;
- Отображение метрик в виде code mining над объявлением метода;
- Поддержка двух профилей алгоритмов: строгий McCabe/Sonar и совместимый с BSL LS;
- Настраиваемые пороги для цикломатической и когнитивной сложности;
- Создание предупреждений в Problems при превышении порогов;
- Подсчет логических операторов в условиях (И/Или);
- Учет тернарных операторов
?(...); - Опциональный учет
ИначеиЖдатьв зависимости от профиля; - Кэширование результатов для производительности;
- Поддержка EDT 2025.2.x и 2026.1.x.
Как это работает
Плагин анализирует каждый метод в BSL-модуле и подсчитывает две метрики:
Цикломатическая сложность показывает количество независимых путей выполнения. Учитываются условия (Если, ИначеЕсли), циклы (Пока, Для), обработка исключений, тернарные операторы и логические операторы в условиях.
Когнитивная сложность измеряет, насколько трудно понять логику метода. Дополнительно учитывается уровень вложенности конструкций - чем глубже вложенность, тем сложнее код для понимания.

Профили алгоритмов
Плагин поддерживает два профиля вычисления метрик:
STRICT_MCCABE_SONAR_BSL
Строгий профиль по классическим алгоритмам McCabe и Sonar. Не учитывает Иначе для цикломатической сложности, Ждать не увеличивает сложность.
BSLLS_COMPATIBLE
Профиль, совместимый с BSL Language Server. Учитывает Иначе для цикломатической сложности, использует привычные пороги.
Вы можете выбрать профиль в настройках плагина в зависимости от ваших стандартов кодирования.
Отображение метрик в редакторе
Плагин использует механизм code mining EDT для отображения метрик прямо над объявлением каждого метода. Вы видите строку вида:
Когнитивная сложность: 7 | Цикломатическая сложность: 5
Процедура ОбработатьДокумент(Документ, Параметры)
// тело процедуры
КонецПроцедуры
Метрики обновляются автоматически при изменении кода. Если сложность превышает пороги, метод также помечается в панели Problems.
Настройка порогов
Вы можете настроить пороги сложности под стандарты вашей команды:
- Порог цикломатической сложности (по умолчанию
20) - Порог когнитивной сложности (по умолчанию
15) - Профиль алгоритма - строгий или совместимый с BSL LS
При превышении порога метод помечается в панели Problems, что помогает контролировать качество кода.
Поставка и установка
В поставке два архива
Плагин поставляется в двух вариантах: готовый для установки релиз и исходный код для разработчиков. Выберите нужный вариант в зависимости от ваших задач.
В папке distribution/ находятся два архива:
📦 Релиз (30 KB)
edt-complexity-analyzer-release-0.3.1.zip
Готовый плагин для установки. Не требует сборки. Просто распакуйте и установите через EDT.
💻 Исходники (258 KB)
edt-complexity-analyzer-project-0.3.1.zip
Исходный код для доработки. Требует Java 17 и Maven для сборки.
Установка из релизного архива:
- Распакуйте
edt-complexity-analyzer-release-0.3.1.zip - В EDT откройте
Help > Install New Software... - Нажмите
Add..., затемLocal... - Укажите папку
update-siteиз распакованного архива - Выберите плагин "EDT Complexity Analyzer" и завершите установку
- Перезапустите EDT
После установки метрики сложности будут автоматически отображаться над каждым методом в BSL-модулях.
- 1C:EDT версии 2025.2.x или 2026.1.x
- Java 17 и Maven для сборки плагина
Типичные сценарии использования
Сценарий 1: Контроль сложности при разработке
Вы пишете новую процедуру обработки документа. По мере добавления условий и циклов вы видите, как растет сложность метода. Когда цифры становятся слишком большими, вы понимаете, что пора разбить метод на несколько более простых.
Это помогает поддерживать код в хорошем состоянии с самого начала, а не рефакторить его потом.
Сценарий 2: Рефакторинг legacy-кода
Вы открываете старый модуль и видите, что некоторые методы имеют когнитивную сложность 30+. Плагин помогает идентифицировать самые проблемные места, которые нужно рефакторить в первую очередь.
После рефакторинга вы сразу видите, как снизилась сложность, и можете оценить улучшение качества кода.
Сценарий 3: Code review
При проверке кода коллег вы сразу видите метрики сложности. Если метод имеет высокую когнитивную сложность, вы можете предложить его упростить или разбить на части.
Это делает code review более объективным и помогает поддерживать единые стандарты качества в команде.
Итог
EDT Complexity Analyzer - это практичный инструмент для контроля качества BSL-кода. Он помогает разработчикам писать более простой и понятный код, идентифицировать проблемные места и поддерживать единые стандарты в команде.
Основные преимущества плагина:
- Нативная интеграция с EDT без внешних зависимостей
- Отображение метрик в реальном времени прямо в редакторе
- Поддержка двух профилей алгоритмов для разных стандартов
- Настраиваемые пороги и предупреждения
- Открытый исходный код для доработки под ваши нужды
Плагин находится в активной разработке и будет дополняться новыми возможностями.
Для кого этот плагин
EDT Complexity Analyzer будет полезен разработчикам на 1С, которые используют EDT и хотят контролировать сложность кода, поддерживать высокое качество и следовать best practices разработки.
Другие разработки автора
- Консоль запросов для 1C:EDT: выполнение запросов прямо в отладчике
//infostart.ru/public/2688688/ - Transparent Image: делаем картинку прозрачной
//infostart.ru/public/2684179/ - Удаление объектов
//infostart.ru/public/2683195/ - Стартер 1С: запуск, пользователи, кэш, DT/CF и демо-базы
//infostart.ru/public/2679314/ - Skill для ИИ, который научил его отлаживать 1С: смотреть переменные, идти по шагам и глубже разбирать код
//infostart.ru/public/2665098/ - VS Code + 1С без лишней рутины: плагин для конфигурации, расширений, EPF/ERF и AI-скиллов
//infostart.ru/public/2661928/ - ИИ-кодер без багов: настраиваем агента для безупречного кода
//infostart.ru/public/2639956/
Вступайте в нашу телеграмм-группу Инфостарт