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

04.06.26

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

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

Файлы

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

Наименование Скачано Купить файл
EDT - Вывод цикломатической и когнитивной сложности
.rar 83,87Kb
9 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С:Бухгалтерия 3.0 Бесплатно (free)

Одиннадцать граблей схем компоновки, которые не видно в конструкторе и не ловит EDT, на реальных отчетах БП КОРП. Формат числа задается в двух местах, и условное оформление варианта перебивает формат поля. Ресурс складывает штуки с часами, и помогает выражение «только когда единица одна». Ресурс пуст в детальных записях, параметр не появляется в шапке без userSettingID, valueListAllowed ломает границы периода, Остатки и СрезПоследних с параметром периода падают с «Несоответствием типов», title без xsi:type дает «Исключение XDTO» при загрузке. В конце код проверки схемы из файла до обновления базы, сводная таблица и чеклист.

16.10.2026    443    Konstmax13    2    

2

Технологический журнал Сервера EDT Обновление 1С Системный администратор Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Конфигуратор и агент EDT тихо вылетают на 0 % «Обработки структуры базы данных», EDT пишет «Потеряно соединение с агентом конфигуратора», а модель проекта при этом чистая. Разбор двух аварий на большой серверной базе БП КОРП: какие факты снимать (журнал Windows, техжурнал нужной версии, хвост лога процесса), почему инкрементальная выгрузка EDT ломается после сбоев, как довести обновление пакетно через /UpdateDBCfg -Server, как опознать свои rphost среди нескольких кластеров и снять агент EDT, который сам поднимается и держит базу. Протокол одного дня по минутам и порядок диагностики из восьми шагов.

15.10.2026    402    Konstmax13    0    

0

Групповая разработка (Git, хранилище) EDT Обновление 1С Роли и права Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Загрузка конфигурации в базу висела часами без единой ошибки: ядро на 100 %, SQL не трогается, лог пуст. Одинаково у агента EDT, у /LoadConfigFromFiles и у полной загрузки. Причина нашлась бисектом: блоки прав в Rights.rights, дописанные в конец файла, а EDT и конфигуратор ждут их строго по возрастанию UUID объекта. Рядом еще две грабли: права на перечисления вешают загрузку так же, а право на HTTP-сервис целиком платформа молча выбрасывает. В статье хронология, как найти виновника за минуты, как править права скриптом со вставкой по позиции и скрипт проверки ролей перед обновлением (бесплатно, на GitHub).

15.10.2026    276    Konstmax13    0    

0

Инструментарий разработчика Нейросети Рефакторинг и качество кода EDT Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Как ИИ-агент (Claude Code) работает в живом EDT-проекте 1С:Бухгалтерии КОРП 3.0: из чего собрать стенд с MCP-сервером для EDT, как ставить задачи агенту, где он ломает проект и какие проверки это ловят. Реальные случаи: рукописные метаданные, ронявшие конфигуратор; четыре дня зависшего обновления из-за порядка блоков в Rights.rights; ошибки, которые EDT пропускает, а платформа нет; сплошная сверка вместо «вроде работает». В приложении шаблон CLAUDE.md, шаблон правила, чеклист перед обновлением базы и скрипты проверки ролей и схем СКД.

15.10.2026    3342    Konstmax13    11    

11

Нейросети EDT Разработчик 1С:Предприятие 8 Абонемент ($m)

Набор из 17 скилов для агента, который пишет код. Агент пишет и проверяет конфигурацию в формате 1C:EDT по стандартам раздела ИТС «Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8».

3 стартмани

05.10.2026    670    1    burlakov    0    

3

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) EDT Разработчик 1С 8.3 1С:Управление торговлей 11 Россия Бесплатно (free)

Разобрали, как выстроить CI для 1С 8.3 на EDT и Git: ветки с автослиянием, Jenkins и Pipeline Libraries, подготовка эталонной ИБ на каждый MR, Vanessa и xUnitFor1C в Allure. Материал для инструментальщика, который проектирует проверки до master, а не после релиза.

28.09.2026    810    zolotov7481    0    

0

EDT Разработчик Бесплатно (free)

Баги, недостающие улучшения и специфические потребности инфраструктуры не всегда находят отражение в новых версиях 1C:EDT – и тогда проблему можно решить с помощью собственного плагина. Рассказываем, как подготовить Eclipse, разобраться в архитектуре EDT, исследовать типовой функционал, подключать публичные сервисы и создавать пользовательский интерфейс. Разбираем отладку и сборку плагина, а также типичные сложности, из-за которых новички часто останавливаются на первых шагах. Все этапы показываем на примерах из практики создания плагина для работы с хранилищем 1С.

17.09.2026    1377    ZigRinat85    1    

7

Нейросети DevOps и автоматизация разработки EDT Системный администратор Разработчик Руководитель проекта Стажер 1С 8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:ERP. Управление холдингом Абонемент ($m)

Почему ни утилита ring, ни ibcmd не способны «из коробки» собрать бинарный .cfe из исходников EDT без развертывания СУБД? Разработчики коммитят код в Git из 1C:EDT, но на серверы тестирования и в прод по-прежнему требуются бинарные контейнеры Конфигуратора. Ручные манипуляции с XML, локальные временные базы и забытый синтаксический контроль на каждой задаче сжигают часы рабочего времени. В статье разбираем архитектуру инструментов платформы и выстраиваем сквозной автоматический мост между EDT и Конфигуратором: - Анатомия сборки: почему ring только транслирует схему XML, а ibcmd жестко завязана на структуры СУБД; - Трансформация процессов: как освободить программиста от рутины, победить кодировки и Xvfb в Linux и сделать Git единственным источником правды; - Zero-dependency решение: скрипт edt-to-configurator.js, работающий и как консольный сборщик, и как Agent Skill для ИИ-ассистентов; - Ready-to-use CI/CD: готовые конфигурации для GitLab CI и GitHub Actions.

1 стартмани

31.08.2026    2497    Ninel_S    4    

2
Отзывы
1. infosoft-v 1127 03.06.26 15:26 Сейчас в теме
Отличный плагин, спасибо, что поделились.
Не нашел, где у плагина находятся настройки. Подскажите пожалуйста.
Этот проект есть на GitHub?
3. infosoft-v 1127 04.06.26 07:49 Сейчас в теме
(2) Вы в публикации писали:
Вы можете настроить пороги сложности под стандарты вашей команды:
Порог цикломатической сложности (по умолчанию 20)
Порог когнитивной сложности (по умолчанию 15)
Профиль алгоритма - строгий или совместимый с BSL LS

Подскажите, как можно настроить плагин?
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. infosoft-v 1127 03.06.26 15:26 Сейчас в теме
Отличный плагин, спасибо, что поделились.
Не нашел, где у плагина находятся настройки. Подскажите пожалуйста.
Этот проект есть на GitHub?
2. sqr4 110 03.06.26 17:06 Сейчас в теме
(1) Пожалуйста. Настроек у плагина к сожалению нет как таковых. На GitHub тоже не выкладывал.
3. infosoft-v 1127 04.06.26 07:49 Сейчас в теме
(2) Вы в публикации писали:
Вы можете настроить пороги сложности под стандарты вашей команды:
Порог цикломатической сложности (по умолчанию 20)
Порог когнитивной сложности (по умолчанию 15)
Профиль алгоритма - строгий или совместимый с BSL LS

Подскажите, как можно настроить плагин?
4. sqr4 110 04.06.26 09:43 Сейчас в теме
(3) Коллега, сегодня обновлю статью и файлы под эти настройки. Напишите куда можно вам скинуть обновленную версию плагина.
6. infosoft-v 1127 04.06.26 10:42 Сейчас в теме
(4)
Напишите куда можно вам скинуть обновленную версию плагина.
Вам будет удобно через проект на GitHub?
7. sqr4 110 04.06.26 10:57 Сейчас в теме
(6) Статью обновил, на GitHub пока не планировал выкладывать.
5. infosoft-v 1127 04.06.26 10:29 Сейчас в теме
Спасибо.
Еще обратил внимание, что если в модуле вырезать метод и вставить его в другое место в этом же модуле, то расчет сложности для этого метода пропадает. Пример на скриншоте.
Прикрепленные файлы:
8. sqr4 110 04.06.26 10:58 Сейчас в теме
(5) В следующих релизах попробую сделать так чтобы отображало. Можно открыть/закрыть модуль и сработает.
9. infosoft-v 1127 05.06.26 08:32 Сейчас в теме
Еще обратил внимание, что когда пользуешься быстрым действием, например "Создать процедуру с именем ..." тогда во всем модуле исчезает вывод метрик. Приходится повторно открывать объект. Прищёлкивание между закладками объекта не восстанавливает метрики.
Прикрепленные файлы:
10. sqr4 110 05.06.26 10:38 Сейчас в теме
(9) спасибо за обратную связь, поправим
11. sqr4 110 07.06.26 17:12 Сейчас в теме
(9) обновил, вроде обе проблемы ушли. И с новой функцией и через быстрый фикс.
12. infosoft-v 1127 08.06.26 08:21 Сейчас в теме
(11) Кажется архиве лежит старый дистрибутив. При попытке обновить, EDT пишет, что ничего обновлять не требуется.
Прикрепленные файлы:
13. sqr4 110 08.06.26 10:53 Сейчас в теме
(12) обновил еще раз теперь должен быть файл с плагином
Для отправки сообщения требуется регистрация/авторизация