SonarQube для 1С — это сервер непрерывного статического анализа кода, который с помощью BSL-плагина проверяет модули и запросы 1С по набору правил, считает метрики качества и технический долг и может блокировать слияние изменений, если качество упало. Анализ запускается автоматически на каждом изменении в Git или по расписанию, а руководитель видит не «ощущения», а динамику: сколько ошибок, уязвимостей и «запахов кода» добавил последний релиз.

Ниже — какие проблемы он решает, как устроен, какие варианты внедрения есть для команд с Git и с хранилищем конфигурации, сколько это занимает и когда окупается.

Какую проблему решает SonarQube

Знакомая картина в команде 1С: код работает, но каждое изменение даётся всё труднее. Время на доработку растёт от релиза к релизу, ошибки всплывают в рабочей базе, а код-ревью превращается в спор о вкусах или вовсе не успевает за потоком задач.

Дело обычно не в квалификации программистов, а в отсутствии объективной и непрерывной обратной связи:

  • у каждого разработчика своё понимание «хорошего кода»;
  • технический долг никто не измеряет, и он копится годами;
  • ревью зависит от усталости и настроения проверяющего;
  • руководитель принимает решения о рефакторинге «на глаз».

SonarQube переводит качество из разряда мнений в разряд метрик.

Что проверяет анализ

Для 1С используется открытый плагин сообщества, построенный на BSL Language Server — том же движке, который подсвечивает ошибки в VS Code и других редакторах. Он понимает встроенный язык, язык запросов и структуру выгруженной конфигурации.

КатегорияЧто находитПример
Надёжность (баги)Код, который почти наверняка приведёт к ошибкеОбращение к несуществующей переменной, пустой обработчик исключения
БезопасностьОпасные конструкцииВыполнение произвольного кода, небезопасные внешние вызовы
Поддерживаемость (code smells)То, что не ломает сейчас, но мешает развитиюСлишком длинные методы, магические числа, нарушения стандартов
ДублированиеКопипастаОдинаковые фрагменты в разных модулях
СложностьЗапутанная логикаВысокая цикломатическая сложность функций
ЗапросыТипичные ошибки в тексте запросовЗапрос в цикле, обращение к реквизитам через точку

Правила можно отключать, настраивать под стандарты компании и дополнять собственными диагностиками.

Метрики и технический долг

SonarQube оценивает технический долг во времени: сколько часов или дней нужно, чтобы исправить найденные замечания. Для руководителя это превращается в понятные фразы:

  • «Релиз выпущен, но долг вырос на неделю работы».
  • «В следующем спринте выделяем 20% времени на рефакторинг модуля продаж».

Важна не абсолютная цифра на legacy-конфигурации — она почти всегда пугает, — а динамика: растёт долг или снижается.

Quality Gate: ворота качества

SonarQube для 1С: Quality Gate пропускает только код, соответствующий условиям
SonarQube для 1С: Quality Gate пропускает только код, соответствующий условиям

Quality Gate — набор условий, которым должен соответствовать новый код, чтобы пройти проверку. Например:

  • нет новых багов и уязвимостей;
  • дублирование в новом коде не выше заданного порога;
  • нет новых замечаний с критичностью «блокирующее».

Ключевое слово — «новый». Требовать сразу исправить весь накопленный долг бессмысленно. Правило «не делать хуже» работает с первого дня и постепенно улучшает кодовую базу.

Как это работает

  1. Разработчик отправляет изменения в Git.
  2. CI-система (GitLab CI, Jenkins и аналоги) запускает сканер.
  3. Сканер анализирует исходники с помощью BSL-плагина.
  4. Результаты уходят на сервер SonarQube.
  5. Команда видит итог в интерфейсе, а Quality Gate разрешает или блокирует слияние.

Нужны: сервер SonarQube (удобно в Docker), BSL-плагин, сканер, CI-система и исходники в Git. Учтите, что в бесплатной редакции SonarQube нет полноценного анализа веток и merge request — для этого используют сторонний плагин или платные редакции.

Три варианта внедрения

1. «Точка отсчёта». Подходит, чтобы оценить состояние legacy-конфигурации:

  • выгрузить конфигурацию в файлы;
  • запустить анализ;
  • зафиксировать метрики как базовую линию.

Это можно сделать за день-два и уже получить список самых проблемных модулей.

2. Полный цикл с Git. Разработка в EDT, исходники в Git, анализ на каждом merge request, Quality Gate блокирует слияние при падении качества. Самый эффективный вариант, но требует зрелого процесса — см. DevOps для 1С.

3. Хранилище плюс выгрузка в Git. Если команда пока работает в конфигураторе с хранилищем, историю хранилища регулярно выгружают в Git-репозиторий (например, инструментом GitSync), а анализ запускают по расписанию, скажем ночью. Мгновенной обратной связи нет, но динамика качества видна.

Сроки внедрения

ЭтапЧто входитОриентировочно
Базовый запускСервер в Docker, первый анализ, знакомство с отчётами1–3 дня
Встраивание в CIАвтозапуск, Quality Gate, анализ веток, обучение1–2 недели
ПритиркаНастройка правил под стандарты компании, разбор legacy, привычка смотреть отчёты до ревью1–3 месяца

Оценку трудозатрат удобно делать по почасовой ставке — ориентир 2 500 ₽/ч — исходя из выбранного варианта и текущего состояния процесса разработки.

Когда окупается

  • Ошибок в релизах становится меньше: проблемы ловятся при написании кода.
  • Код-ревью перестаёт быть спором о вкусах — есть общие правила.
  • Новички быстрее входят в проект: анализатор сам подсказывает стандарты.
  • Руководитель видит реальную картину и может планировать рефакторинг.
  • Уход ведущего разработчика не обрушивает контроль качества.

Не окупается, если результаты никто не смотрит. Анализатор, который работает «для галочки», — это лишний сервер.

Чем дополнить

  • 1С:АПК — проверка на соответствие стандартам фирмы «1С»; результаты можно переносить в SonarQube инструментами сообщества.
  • Проверки EDT — подсказки прямо в среде разработки, но без истории метрик.
  • Автотесты — статический анализ не проверяет бизнес-логику; для этого нужны сценарные тесты. Покрытие тестами тоже можно выводить в SonarQube. Подробнее — в тестировании 1С.
  • Живое код-ревью — SonarQube снимает с ревьюера рутину, но архитектурные решения по-прежнему оценивает человек.
SonarQube не заменяет ревью и не наказывает разработчиков. Он делает качество измеримым, а работу над ним — управляемой.

Итог

  • SonarQube для 1С с BSL-плагином автоматически проверяет код и запросы, считает метрики и технический долг.
  • Quality Gate по новому коду работает по принципу «не делать хуже» и постепенно улучшает кодовую базу.
  • Начать можно с разового анализа конфигурации, затем встроить проверку в CI.
  • Команды без Git могут выгружать хранилище в репозиторий и анализировать по расписанию.
  • Эффект появляется только когда команда реально работает с результатами анализа.