Управляй качеством кода 1С с помощью SonarQube
Управляй техническом долгом проектов 1С с помощью SonarQube. В статье рассматривается пример применения SonarQube при разработке.
- Описание
- Подробнее
Описание
Оглавление
- Введение
- Управление техническим долгом
- Быстрый старт
- Анализ проекта
- Расширенный пример
- Подведем итоги
- Дальнейшее развитие темы
- Благодарности
- Ссылки
Введение
После разработки проектов и задач на 1С, собственно как и в других языках программирования, приходится сталкиваться с техническим долгом.

Что такое технический долг? Технический долг — это метафора программной инженерии, обозначающая накопленные в программном коде или архитектуре проблемы, связанные с пренебрежением к качеству при разработке программного обеспечения и вызывающие дополнительные затраты труда в будущем (Wikipedia).
Причины возникновения могут быть разными:
Недостаточная компетентность кадров;
Давление со стороны бизнеса;
Плохо спроектированная архитектура и отсутствие документации;
Отсутствие процессов review и refactoring;
Отсутствует тестирование;
Основная причина, почему нужно управлять качеством кода — это увеличение стоимости сопровождения и разработки продукта в дальнейшем из-за технического долга.
Управление техническим долгом

Управлять техническим долгом можно следующим подходами:
Внешний аудит — привлечение сторонней компании. Затратно, на результат может влиять человеческий фактор.
Внутренний аудит — визуальная проверка кода (code review). Опять же на результат влияет человеческий фактор и иногда необъективность.
Автоматизированная проверка кода — применяются статические анализаторы. В мире 1С используется конфигурация 1С: АПК.
Существует еще один подход, который я считаю наиболее эффективным — непрерывная проверка кода (continuous code inspection). Более подробно можно изучить подход в статье Управление техническим долгом — Концепция Continuous Inspection. Мой выбор пал на SonarQube.

SonarQube — программное решение для непрерывного анализа и измерения качества кода. На текущий момент платформой поддерживается более 27 языков программирования. К сожалению, язык 1С не включен в официальный перечень поддерживаемых языков SonarQube.
На рынке существует как минимум два плагина для поддержки языка 1С в SonarQube.
SonarQube 1C (BSL) Community Plugin — open source решение (https://github.com/1c-syntax/sonar-bsl-plugin-community).
SONARQUBE 1C (BSL) Plugin — решение от SilverBulleters. (https://silverbulleters.org/sonarqube).
В статье используется плагин SonarQube 1C (BSL) Community Plugin, т.к. он бесплатен. Плагин основан на проекте BSL Language Server — реализации протокола language server protocol для языка 1С: Предприятие 8 и OneScript.
Быстрый старт

В рамках базового примера мы развернем SonarQube, подготовим рабочий каталог проекта 1С, загрузим результаты проверки кода на сервис. В примере будет использоваться операционная система Windows. Повторить то же самое для unix / macos систем возможно, но с небольшими изменениями. Все скрипты будем выполнять в консоли CMD или Powershell (не имеет значения).
Мною заранее был заготовлен шаблон рабочего окружения. Скачиваем его по ссылке.
