Всё еще не выгружаете конфигурацию в git? Самое время начать!
Code Review тема в комьюнити 1С довольно популярная. На конференциях и в публикациях на Инфостарте можно услышать и почитать, что процесс этот очень даже желательный, если вы хотите выдавать качественный продукт.
К сожалению, инструментов для удобного рецензирования кода не так много.
Большинство команд используют возможности облачных платформ для хостинга кода, например, Github или GitLab. Платформы классные, я бы даже сказал, незаменимые. Правда, проверять новый код в них немного непривычно. Кроме того, в зависимости от настроек CI, код может попадать на проверку не сразу. В этом нет ничего плохого, скорее даже наоборот.
Однажды, смотря на очередной Merge Request в GitLab, мне пришла в голову идея сделать свой велосипед инструмент для проверки вносимых изменений, который бы позволил в более или менее привычном виде анализировать различия в коде.
Как всегда, любая конструктивная критика и предложения по доработке горячо приветствуются!
Как это работает?
Обработка под капотом запускает различные команды git в каталоге репозитория с конфигурацией 1С и анализирует полученные данные. Отсюда следует, что на клиентской машине как минимум должен быть установлен этот самый git.
Системные требования:
- Установленный git
- Операционная система Windows или Linux
- Платформа не ниже 8.3.14.1565
- Конфигурация на основе БСП
- Локальный репозиторий с исходниками конфигурации (не в формате EDT)
Возможности:
Обработка позволяет прочитать список всех версий из локального репозитория (коммиты/commits). Для каждой версии или диапазона версий вывести изменения. В полученные изменения добавить свои замечания и/или замечания bsl-language-server, а затем отправить полученный результат на ознакомление/исправление виновнику изменений.
Для измененных объектов определяются не только изменения модулей, но и изменения реквизитов, табличных частей, команд, измерений. На данный момент определяются не все изменения. Механизм еще будет дорабатываться, но уже сейчас можно быстро понять, что конкретно изменилось в том или ином объекте метаданных, вместо того, чтобы анализировать глазами изменения в виде xml.
Есть возможность для списка коммитов определять номер версии хранилища, если для выгрузки конфигурации использовался gitsync
Процесс рецензирования или Code Review:
Замечания могут вноситься руками. Для этого используемый в инструменте редактор кода был специально доработан. На практике это выглядит следующим образом:
Дополнительно к процессу проверки можно подключить bsl-language-server. Изначально задумывалось получать изменения из SonarQube. Делать это не сложно, но есть один очень важный нюанс. Нужно как-то гарантировать, что код и его анализ в проекте SonarQube соответствует тому, что мы проверяем в данный момент, а сделать это сложно. Если просто брать все замечания из Сонара, то легко можно столкнуться с ситуацией, когда версия кода в нём отличается от текущей и все замечания мягко говоря не актуальны. Именно поэтому выбор был сделан в пользу BSLLS.
Результаты рецензирования:
Результат проверки можно сохранить в хранилище настроек или файл. При использовании первого варианта достаточно отправить уникальный идентификатор проверки автору изменений. Затем с помощью идентификатор можно будет открыть и посмотреть все замечания. Для использования данного варианта необходимо процедуру Code Review и работу с результатами выполнять в одной базе.
Сам рецензент в любой момент может видеть все проведенные проверки, возвращаться к ним, просматривать или удалять по истечении какого-то срока.
При использовании расширения появляется возможность делиться навигационной ссылкой, при переходе по которой автор изменений сразу увидит все результаты проверки его кода.
Особенности и известные проблемы:
- В linux могут наблюдаться некоторые проблемы с отображением замечаний в редакторе кода
- git не всегда отдает читаемые названия измененных файлов. В обработку встроена проверка и, возможно, придется выполнить одну простую команду в консоли вручную.
- Формат исходников EDT пока не поддерживается
Планы по развитию:
- Расширить количество анализируемых изменений в объектах метаданных
- Добавить интеграцию с paste1c.ru
- Добавить возможность отвечать на замечания, выявленные в процессе Code Review
Тестировалось в следующих условиях:
- Windows 10 x64, релизы платформы 8.3.18.1616, 8.3.23.1688
- Linux Ubuntu 22.04 x64 релиз платформы 8.3.23.1596
Похожие разработки:
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.15.69