Про 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/