Как проверять качество кода в 1С? Готовая сборка SonarQube для 1С в Docker

SonarQube Инструменты

Качество кода в 1С — тема вечная и часто недооцененная. Кривой код сложнее поддерживать, в нем чаще возникают ошибки, а ввод нового разработчика в проект превращается в пытку (как и добавление новых фич в таком коде).

Чтобы систематизировать борьбу с техническим долгом, мы у себя в CI/CD давно используем статический анализатор SonarQube. Это мощный инструмент, который помогает отлавливать ошибки, уязвимости и просто неудачные решения в коде до того, как они нанесут реальный ущерб.

Но его настройка «с нуля» под 1С, мягко говоря, нетривиальна. Нужно найти и подобрать совместимые версии плагинов для поддержки синтаксиса BSL и анализа веток в бесплатной версии, правильно настроить параметры Java, разобраться с системными лимитами… В общем, можно легко потратить несколько часов.

Мы используем вот этот репозиторий на GitHub:

https://github.com/Daabramov/Sonarqube-for-1c-docker

Это готовый docker-compose файл, который разворачивает полностью настроенный и готовый к работе SonarQube для 1С.

Что внутри этой сборки? TL;DR

Для тех, у кого нет времени читать дальше, вот суть:

  • 🚀 Старт за одну команду. Просто пишете docker-compose up -d в терминале, и через пару минут у вас работающий SonarQube. При условии, что у вас установлен docker.
  • 🔌 Все нужные плагины включены. Уже установлены и настроены sonar-bsl-plugin-community для анализа 1С-кода и sonarqube-community-branch-plugin для анализа веток в Community-версии.
  • 🇷🇺 Русский язык из коробки. Интерфейс сразу переведен, что удобно для команды.
  • ⚙️ Оптимизация под 1С. Автор уже выставил адекватные параметры Java и системные настройки, чтобы Sonar не падал на анализе больших конфигураций.

Зачем это вообще нужно?

Представь, что мы строим дом и нам нужно срочно в него въехать.

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

Быстрый путь: наспех залить фундамент, стены сделать из более дешевых материалов, а трубы кинуть по самому короткому маршруту, прямо поверх стен. Ты въедешь в дом гораздо быстрее! Но это решение имеет свою цену.

Технический долг — это и есть эта будущая цена за быстрое решение.

Через год у тебя просядет фундамент (программа начнет работать нестабильно). Дешевые стены начнут трескаться (появятся баги в самых неожиданных местах). А когда ты захочешь повесить новую полку, тебе придется штробить стену и аккуратно обходить ту самую трубу, проложенную наспех (добавление новых функций станет сложным и долгим).

Ценность этой Docker-сборки в сэкономленном времени. Вместо того чтобы вручную проходить все круги ада с настройкой, вы получаете готовый инструмент и можете сразу сосредоточиться на главном, на анализе своего кода.

Как мы это используем на практике

Мы встроили SonarQube в наши CI/CD пайплайны в GitLab. Каждый push в репозиторий запускает автоматическую проверку кода. Это позволяет отловить потенциальные проблемы еще на этапе разработки, а не после релиза.

Например, вот так выглядит шаг запуска анализатора в нашем open-source проекте actions, который мы используем для сборки 1С-конфигураций.

Ссылка на шаг SonarQube в configuration.yml

Как начать

Все, что вам нужно, это установленный Docker.

  1. Устанавливаем docker на свой компьютер или сервер.
  2. Клонируйте репозиторий: git clone https://github.com/Daabramov/Sonarqube-for-1c-docker.git
  3. Переходим в папку с проектом.
  4. Запустите команду: docker-compose up -d

Важный момент: для работы SonarQube нужно не меньше 6 ГБ свободной оперативной памяти. Если у вас Docker работает под WSL2 в Windows, возможно, придется поправить конфиг, как описано в README репозитория.

После запуска SonarQube будет доступен по адресу http://localhost:32772 с логином и паролем по умолчанию admin:admin.

А вы используете статические анализаторы в своих 1С-проектах? Какие инструменты помогают вам бороться с техническим долгом и поддерживать код в чистоте? Делитесь опытом в комментариях! 🤔

Барилко Виталий
Оцените автора
( 1 оценка, среднее 5 из 5 )
Добавить комментарий