EDT - Вывод цикломатической и когнитивной сложности

13.05.26

Разработка - EDT

Нативный плагин для 1C:EDT, который анализирует цикломатическую и когнитивную сложность BSL-кода. Показывает метрики прямо в редакторе над каждым методом, помогает находить сложные участки кода и принимать решения о рефакторинге

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
EDT - Вывод цикломатической и когнитивной сложности
.rar 288,55Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.
 
1C:EDT

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-модуле и подсчитывает две метрики:

Цикломатическая сложность показывает количество независимых путей выполнения. Учитываются условия (Если, ИначеЕсли), циклы (Пока, Для), обработка исключений, тернарные операторы и логические операторы в условиях.

Когнитивная сложность измеряет, насколько трудно понять логику метода. Дополнительно учитывается уровень вложенности конструкций - чем глубже вложенность, тем сложнее код для понимания.

Пример отображения метрик сложности в редакторе EDT

Профили алгоритмов

Плагин поддерживает два профиля вычисления метрик:

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 для сборки.

Установка из релизного архива:

  1. Распакуйте edt-complexity-analyzer-release-0.3.1.zip
  2. В EDT откройте Help > Install New Software...
  3. Нажмите Add..., затем Local...
  4. Укажите папку update-site из распакованного архива
  5. Выберите плагин "EDT Complexity Analyzer" и завершите установку
  6. Перезапустите 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 разработки.

Другие разработки автора

Вступайте в нашу телеграмм-группу Инфостарт

EDT 1C:EDT плагин BSL цикломатическая сложность когнитивная сложность анализ кода качество кода рефакторинг метрики code mining Eclipse разработка инструменты разработчика статический анализ сложность кода McCabe Sonar code quality complexity analyzer

См. также

EDT Программист 1С 8.3 1С 8.5 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

Плагин для 1C:EDT, который добавляет консоль запросов с возможностью выполнения в контексте отладки. Автоматически определяет типы параметров из метаданных, поддерживает работу с временными таблицами, импорт запросов из переменных отладки и показывает статистику выполнения. Не требует переключения в режим предприятия - все запросы выполняются прямо в среде разработки.

3 стартмани

12.05.2026    330    1    sqr4    0    

4

Инструментарий разработчика Программист 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Утилита для удаления белого фона с изображений и создания прозрачного PNG. Запускается из командной строки или из 1С. Готовый исполняемый файл для Windows, исходники на Dart прилагаются.

1 стартмани

05.05.2026    254    0    sqr4    0    

1

Чистка данных Программист Пользователь 1С 8.3 1С 8.5 1С:Библиотека стандартных подсистем Абонемент ($m)

Внешняя обработка для 1С 8.3 на управляемых формах: отбор объектов, просмотр найденных строк и ссылок, удаление выбранного или по дереву без изменения конфигурации. Есть фоновое удаление через БСП с отображением прогресса. Перед работой в живой базе — проверка на копии.

3 стартмани

04.05.2026    367    4    sqr4    0    

1

Инструменты администратора БД Системный администратор Программист Пользователь 1С 8.3 1С 8.5 Россия Абонемент ($m)

Еще один стартер 1С для работы со списком информационных баз: запуск в Предприятие и Конфигуратор, пользователи по базам, теги, избранное, DT/CF, бэкапы, очистка кэша, создание ИБ из шаблонов и развертывание демо-баз с releases.1c.ru.

4 стартмани

28.04.2026    575    9    sqr4    3    

6

Инструментарий разработчика Нейросети Программист 1С 8.3 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

Показываю переносимый пакет и skill, с помощью которых ИИ может не только читать код 1С, но и реально отлаживать его: ставить breakpoint, смотреть стек, читать значения переменных и разбираться в поведении прикладной логики глубже, чем при обычном анализе исходников.

3 стартмани

13.04.2026    1262    5    sqr4    20    

2

Инструментарий разработчика Программист 1С 8.3 1С 8.5 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

Разбираю практический инструмент для разработки 1С в VS Code: как связать проект с базой, удобно работать с конфигурацией и расширениями, подключить EPF/ERF и подготовить AI-сценарии через 1c-batch.

3 стартмани

09.04.2026    5141    14    sqr4    7    

6

Инструментарий разработчика Нейросети Программист 1С 8.3 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

ИИ выдает рабочий код, но с типичными ошибками стиля и архитектуры. Статья раскрывает, как настроить ИИ-агента для генерации нормального кода. Результат: код быстрее в разы, без технического долга, готовый к внедрению. Практические примеры настройки и разбор "До/После".

3 стартмани

16.03.2026    5939    sqr4    11    

18

DevOps и автоматизация разработки EDT Программист Бесплатно (free)

Разбираемся, почему ручной деплой в 1С все еще жив и сколько времени он на самом деле занимает, несмотря на стремительное развитие CI/CD-подходов. На реальном кейсе показываем, что корень проблемы чаще кроется не в автоматизации, а в ее неэффективной настройке. Событийная модель вместо расписаний, параллельные тесты, использование кеша Gitlab для оптимизаций и правильные настройки для управления репозиториями на раннерах радикально меняют скорость delivery. Объясняем, почему переход на Docker иногда замедляет процесс, как платформенные особенности 1С влияют на пайплайны и какие стратегии позволяют устранить узкие места. Материал будет полезен тем, кто хочет понять реальную стоимость ручного деплоя и сравнить ее с возможностями правильно настроенной автоматизации.

04.03.2026    1348    konst1231    0    

6
Для отправки сообщения требуется регистрация/авторизация