Как упростить подготовку конфигурации для работы с 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

См. также

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

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 руб.

29.06.2022    10376    84    4    

116

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

Про изменения и новинки в агрегаторе открытых проектов OpenYellow, которые появились с момента его создания: про портал, Github и Telegram

15.07.2024    1804    bayselonarrend    7    

17

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

О проблемах новых 1С-проектов в общем океане открытого программного обеспечения.

07.07.2024    2563    bayselonarrend    57    

33

Групповая разработка (Git, хранилище) Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Столкнулся с проблемой при загрузке метаданных в СППР из GitLab на сервере 1С под Linux (РЭД ОС 7.3). При загрузке метаданных конфигурации, процесс загрузки длился несколько секунд и "благополучно" (без сообщений об ошибке) завершался. При этом метаданные не загружались.

1 стартмани

02.07.2024    446    0    Live    1    

3

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

Рассмотрим создание самоформирующейся документации через комментарии и соглашения: как это сделать и зачем, с описанием полного цикла от исходников конфигурации до странички в интернете

17.06.2024    3800    bayselonarrend    2    

60

OneScript Программист Стажер Бесплатно (free)

Поговорим про меню, спиннеры, прогресс-бары и прочие свистелки для CLI приложений на OneScript

20.05.2024    2426    bayselonarrend    18    

70

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

Не знаете, чем бы таким заполнить свой профиль Github? Заполните его своими статьями на Инфостарт! Этот простой workflow сам соберет список ваших последних статей и будет периодически обновлять его для актуализации данных.

08.04.2024    1208    bayselonarrend    2    

33

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

Доработки 1С:ERP на крупных проектах можно организовать, не внося изменения в саму типовую конфигурацию, а используя только расширения и отдельные «микроконфигурации». Расскажем о том, как это сделать без EDT, используя процесс разработки GitHub Flow.

02.04.2024    6760    Begemoth80    24    

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

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

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

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