Как упростить подготовку конфигурации для работы с Git и SonarQube

02.07.24

Разработка - Групповая разработка (Git, хранилище)

Скрипт для работы с SonarQube и локальным репозиторием Git.
Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.
https://github.com/vkrivov/go/

Про 1С, Git и SonarQube

Во-первых, по нынешним временам для работы с 1С используется не только 1С. Есть большое количество инструментов, которые применяются на всех стадиях разработки. В данном случае остановимся на Git и SonarQube.

Во-вторых, когда разработчик выполняет какую-то задачу – и даже неважно, типовая конфигурация или нет – он ведь не правит всю конфигурацию вообще. Модуль объекта, какая-то форма объекта. Или расширение. Или это могут быть вообще внешние обработки (отчёты).

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

 

Цель проекта

Имеется список объектов конфигурации. Данный список разработчик составляет вручную в соответствии с выполняемыми задачами. Список задаётся в текстовом формате в наглядной форме. Пример списка:

Каталог: Тестовая база УТ
Строка соединения: File="C:\Dev\UT"; Usr="Admin"; Pwd="Admin"
[
ОбщийМодуль.CRMЛокализация
Документ.АвансовыйОтчет
Документ.АвансовыйОтчет.Форма.ФормаДокумента
Справочник.Номенклатура
Справочник.Номенклатура.Форма.ФормаСписка
C:\Разработка\Печать реестра.epf
]

Далее вручную или по расписанию запускается скрипт, который на основании списка формирует командную строку запуска конфигуратора. Конфигуратор выгружает объекты из списка в файлы. Для этих файлов делается git add и commt и запускается sonar-scaner.

Итак, цель проекта – выполнить быструю проверку качества кода перед тем, как помещать доработки в хранилище. В этой связи используется только локальный репозиторий, push в публичный репозиторий не делается.

 

Теперь подробнее

Изначально проект состоит из четырёх файлов:

 

 

go.os – собственно скрипт;
init.os – скрипт, который подготавливает необходимую структуру каталогов и создаёт локальный репозиторий git;
настройки.ini – настройки системы (пути к 1С и Sonar, токен Sonar и т. п.);
список объектов.ini – список объектов, которые требуется выгрузить.

 

Установка

Страница проекта на GitHab
https://github.com/vkrivov/go/

Распаковать файлы в нужный каталог. Название и расположение каталога произвольные. После этого выполнить  в этом каталоге команду oscript init.os:

 

 

В результате каталог будет выглядеть следующим образом:

 

 

Назначение созданных каталогов:
git – здесь находится локальный репозиторий;
sonar – здесь (будут) находятся файлы, предназначенные для Sonar.

Файл sonar-project.properties не используется. Вместо этого все параметры передаются сканеру в командной строке.

 

Настройка

Настройки задаются в двух файлах: настройки.ini и список объектов.ini; в файле настройки.ini описаны свойства системы вообще. Пример:

# Исполняемый файл 1С:Предприятия
ПлатформаПолныйПуть: C:\Program Files (x86)\1cv8\8.3.15.1830\bin\1cv8.exe*

# SonarScanner - файл запуска сканера, "sonar-scanner" для Linux, "sonar-scanner.bat" для Windows
# Если путь к сканеру не указан в PATH, нужно указать полный путь к файлу
SonarScanner: C:\Sonar\sonar-scanner\bin\sonar-scanner.bat*
SonarProjectKey: xxx**
SonarSources: .
SonarHostURL: http://localhost:9000***
SonarToken: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx**

* – приводятся исключительно для примера, пути необходимо заменить на реальные
** – определяются при настройке SonarQube
*** – адрес сервера SonarQube, localhost говорит о том, что сервер и сканер установлены на одной машине

В файле список объектов.ini указывается список необходимых объектов для каждой конкретной базы. Пример:
Каталог: Тестовая база*
Строка соединения: File="C:\Dev\UT"; Usr="Admin"; Pwd="1"***
[**
ОбщийМодуль.CRMЛокализация
Документ.АвансовыйОтчет
Документ.АвансовыйОтчет.Форма.ФормаДокумента
Справочник.Номенклатура
Справочник.Номенклатура.Форма.ФормаСписка
C:\Разработка\Печать реестра.epf
]**

* – название каталога, в который будут выгружаться файлы конфигурации, поэтому оно должно быть корректным с точки зрения файловой системы
** – начало и конец блока, в котором перечислены объекты конфигурации
*** – по крайней мере на Linux пакетный режим работает плохо в том случае, если база файловая и в пути содержатся кириллические символы.

Количество баз в файле настроек неограниченно.

 

Как пользоваться

Нужно выполнить команду
oscript go.os "...Комментарий к коммиту…"
либо, если комментарий не нужен (nc – no comments)
oscript go.os -nc

 

Важно

Скрипт написан на OneScript, предполагается, что в системе уже установлены и настроены:
OneScript, https://oscript.io/
Git, https://git-scm.com/
Sonar, https://www.sonarsource.com/

 

На всякий случай

Sonar – штука, мягко говоря, непростая. Мощная, скурпулёзная, но непростая. Во всём. И в установке тоже. В частности, с офф. сайта иногда пропадают ссылки на сканеры. На момент написания статьи они появились, но осадок остался. Подсказка, как решить проблему, нашлась на Медиуме (Статья, кстати, не о совсем сканере, а о том, как установить Сонар из Докера. Полюбопытствуйте. Прикольно.):
https://medium.com/@ayoubchamchi/sonarqube-sonarscanner-8bec4711e482

Смысл в том, что, оказывается, у Сонара есть место, где лежит всё, что можно скачать:
https://binaries.sonarsource.com/

 

Скачать

Страница проекта на GitHab:
https://github.com/vkrivov/go/

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

Скрипт OneScript Git SonarQube

См. также

Групповая разработка (Git, хранилище) Бесплатно (free)

Проектная разработка в 1С живет в условиях жестких дедлайнов, меняющихся команд и нестабильных CI/CD. В статье показываем, как быстро и без лишних затрат внедрить Git на ERP-проектах, продать идею себе и команде и избежать типичных подводных камней. Разберем ветвление, подходы к командной работе, интеграцию с таск-трекерами и особенности тяжелых конфигураций.

04.09.2025    5397    bozo    38    

10

OneScript Мессенджеры и боты Программист Бесплатно (free)

Создаём Telegram-бота для декомпиляции 1С файлов на OneScript и фреймворке Осень. Разберём архитектуру MVC для Telegram-бота. Научимся работать с фреймворком Осень: внедрение зависимостей, аннотации, логирование. Реализуем разбор бинарных файлов (EPF, ERT, CF, CFE.). Упакуем бота в Docker-контейнер

21.08.2025    2412    untru    15    

26

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

Когда в компании используется более 500 внешних обработок для 20 различных баз, процесс их параллельной разработки превращается в борьбу. Расскажем о тернистом пути от ручных скриптов к масштабируемой DevOps-системе, позволяющей централизованно управлять внешними обработками, автоматизировать сборки, интегрироваться с таск-трекером, запускать автотесты и разворачивать окружение в пару кликов.

12.08.2025    5586    untru    13    

22

EDT Групповая разработка (Git, хранилище) Программист 1С v8.3 Бесплатно (free)

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

04.08.2025    4746    ZigRinat85    7    

35

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Программист 1С v8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

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

1 стартмани

29.07.2025    3035    4    gorsheninsn    6    

27

Групповая разработка (Git, хранилище) Программист Бесплатно (free)

Разберем, как организовать работу с GIT, не покидая конфигуратор, и зачем может понадобиться автономный сервер. Вы узнаете о скриптах, которые автоматизируют взаимодействие с GIT прямо из 1С, а также о методах сборки / разборки обработок и расширений «на лету», которые значительно ускоряют процесс разработки и совместной работы.

22.07.2025    6631    ktb    17    

37

Групповая разработка (Git, хранилище) Системный администратор Программист Бесплатно (free)

Все больше команд начинают использовать при разработке 1С GIT. На самом деле производительность GIT так же ограничена и зависима от различных настроек и подходов, как и всеми нами любимая платформа 1С. Для комфортной работы с GIT в случае больших репозиториев необходимо выполнять оптимизацию алгоритмов взаимодействия. Опишу свой опыт. 

14.07.2025    2781    bborisko    0    

8

OneScript Программист 1С v8.3 Бесплатно (free)

В 2024 году главному инструменту DevOps в 1С исполнилось 10 лет. Расскажем о том, что представляет собой экосистема 1Script в 2024 году и почему её важно включить в свой рабочий процесс.

16.06.2025    6487    Evil Beaver    43    

58
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SAShikutkin 18 03.07.24 09:51 Сейчас в теме
Так если это нужно разработчику, проще использовать феникс (https://github.com/otymko/phoenixbsl), и не нужно ждать пока Sonar обработает изменения. (P.S. да правил меньше, но 80% ошибок им перекрывается).
comptr; sleemp; +2 Ответить
2. sleemp 8 05.07.24 12:47 Сейчас в теме
Не совсем понял профит от этого решения.

Результат проверки куска конфигурации скорее всего будет некорректным. Как минимум получим вагон ошибок обращения к несуществующим метаданным.

Как написали в (1), феникс решит задачу предварительного быстрого анализа. А раз уж мы развернули сонар, то проще отгружать в него всю конфигурацию целиком, а исключение объектов не затронутых разработчиком решить через отключение проверки объектов на поддержке и механизм сонара со сравнением с предыдущей версией кода (а тут уже широкий простор для настроек, можно через запросы на слияние пойти, можно предыдущий код в ветке отдельной сохранить, можно по количеству дней отсекать старый код)
comptr; nixel; +2 Ответить
3. nixel 1463 05.07.24 16:46 Сейчас в теме
(2) как раз хотел написать, что при частичной выгрузке конфигурации у сонар-сканнера будет минимум контекста об окружении, и часть проверок, которые опираются на тип модуля или обращения к другим модулям работать не будут.

разве что нужно не забыть фениксу переодически новую версию бсл лс подкладывать.
4. Kyrales 146 06.07.24 13:28 Сейчас в теме
(3) новые версии BSL не работают на фениксе
5. nixel 1463 06.07.24 13:35 Сейчас в теме
(4) а можно подробности? Выдаётся какая-то ошибка или что? API сервера не менялся за эти годы.
7. Kyrales 146 10.07.24 16:15 Сейчас в теме
(5) на 0.20 BSL работает, а на 0.23 нет. Скриншот приложил
Прикрепленные файлы:
8. Kyrales 146 10.07.24 16:58 Сейчас в теме
(5)
(6)
(7)
Все вопрос снимаю. Разобрался. Скачивал только jar файл для замены. А надо было весь bsl-language-server_win.zip . Работает :)
6. sleemp 8 08.07.24 12:38 Сейчас в теме
(4) проверил. работает.
Прикрепленные файлы:
Для отправки сообщения требуется регистрация/авторизация