Git Code Review - инструмент для рецензирования кода

28.04.25

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

Git Code Review - инструмент, позволяющий быстро анализировать изменения из git-репозитория прямо в 1С

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Git Code Review (расширение)
.cfe 3,02Mb ver:20250428
41
41 Скачать (1 SM) Купить за 1 850 руб.
Git Code Review (обработка)
.epf 3,01Mb ver:20250428
55
55 Скачать (1 SM) Купить за 1 850 руб.

Всё еще не выгружаете конфигурацию в 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.

 
 Пример использования BSL Language Server

Результаты рецензирования:

Результат проверки можно сохранить в хранилище настроек или файл. При использовании первого варианта достаточно отправить уникальный идентификатор проверки автору изменений. Затем с помощью идентификатор можно будет открыть и посмотреть все замечания. Для использования данного варианта необходимо процедуру Code Review и работу с результатами выполнять в одной базе.

Сам рецензент в любой момент может видеть все проведенные проверки, возвращаться к ним, просматривать или удалять по истечении какого-то срока.

 
 Пример работы с результами 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

git code review проверка кода bsl language server консоль кода

См. также

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

Внедряем проверку новых версий прямо в расширение. Оповещайте о новых версиях и показывайте пользователям список изменений. Для разработчиков, которые хотят сэкономить время и повысить лояльность клиентов!

05.02.2025    3018    Nonik    10    

18

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

Когда в хранилище одновременно разрабатывают несколько команд, сортировка сделанного и несделанного при формировании релиза и проведение code review по задачам превращаются в непроходимый квест. В таких случаях нужен бранчинг. Расскажем об опыте перехода на новую схему хранения кода для ИТ-департамента.

23.09.2024    7321    kraynev-navi    3    

26

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

Как исправить медленное сравнение конфигурации с файлом cf, сохраненным из хранилища.

17.09.2024    6984    vatkir    16    

10

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

Называть Git новой технологией – уже смешно, но для многих 1С-ников это действительно «новое и неизведанное». Расскажем о плюсах и минусах двух главных систем контроля версий в мире 1С: Git и хранилища.

17.09.2024    13702    Golovanoff    81    

26

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

Во многих командах незаслуженно забывают о том, что в базе меняются расширения (как от вендора, так и собственные) и внешние отчеты и обработки. Вплоть до того, что релиз происходит каждый день – меняются печатные формы, отчеты, обработки. Расскажем о том, как выгружать в Git не только изменения конфигурации рабочего контура, но и файлы внешних обработок и расширений.

05.09.2024    6034    ardn    12    

15

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

Заказчики любят EDT+Git за прозрачность и контроль качества. А у разработчиков есть две основные причины не любить EDT – это тормоза и глюки. Расскажем о том, что нужно учесть команде при переходе на EDT+Git.

14.08.2024    12034    lekot    35    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1568 20.12.23 12:21 Сейчас в теме
ОГОНЬ! Большущее спасибо!
2. artbear 1568 20.12.23 12:33 Сейчас в теме
(0) Опечатка - Процесс резцензирования
3. leobrn 694 20.12.23 12:34 Сейчас в теме
Тоже крутил в этом направлении для конфигурации для ревью https://infostart.ru/profile/350139/, но проект так и не доехал до гитхаба. Дополнительно еще добавлял проверку напрямую через bsl ls. Потом все замечания улетали в Jira.
Прикрепленные файлы:
investec; salexdv; +2 Ответить
5. salexdv 2367 20.12.23 13:14 Сейчас в теме
(3) Было бы классно, если бы получилось доделать. Инструментов много не бывает
15. Tahallus 441 20.12.23 17:40 Сейчас в теме
(3) в итоге какая судьба у "Ревьювер" ? Будет скоро представлен или забили на него ?
Видел только статью с описанием, но самого продукта вроде нет.
16. leobrn 694 21.12.23 07:41 Сейчас в теме
17. Tahallus 441 21.12.23 11:48 Сейчас в теме
(16) не думали выложить в open-sourse как есть? Там глядишь сообщество подхватило бы.
20. leobrn 694 21.12.23 15:50 Сейчас в теме
(17) Думал. Надо уже видимо так и сделать
4. RustIG 1881 20.12.23 12:39 Сейчас в теме
(0) не могу проверить, но, кажется, как всегда "круто". Скачал - поддержал проект.
6. vandalsvq 1608 20.12.23 13:28 Сейчас в теме
Великолепно, здорово, замечательно. Даже не знаю какие еще эпитеты придумать.
И еще, класс что редактор развивается, есть надежда что какие-то наработки перекочуют и в основной репозиторий ))))
7. comptr 36 20.12.23 13:38 Сейчас в теме
По поводу навигационных ссылок.
Во-первых, насколько я понял, обработка должна быть встроена в конфу.
Во-вторых, нужно переопределить обработчики генерации навигационной ссылки в форме обработки, ограничений на вид навигационной ссылки, вроде бы, нет:

&НаКлиенте
Процедура ОбработкаПолученияСпискаНавигационныхСсылок(Элемент, СписокНавигационыхСсылок, КлючПоУмолчанию)
	Элемент.Очистить();
	Элемент.Добавить("ФормаРевью", СтрШаблон(НСтр("ru='Результат ревью %1'"), ГУИД), Ложь); // ГУИД - строковый реквизит формы, для примера.
	КлючПоУмолчанию = "ФормаРевью";	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаПолученияНавигационнойСсылки(Элемент, Ключ, Представление, НавигационнаяСсылка, СтандартнаяОбработка)
	Если Элемент = "ФормаРевью" Тогда
		СтандартнаяОбработка = Ложь;
		НачалоСсылки = "e1cib/app/Обработка.Тест_НавигационнаяСсылка";
		Представление = НачалоСсылки + "?ref=" + ГУИД;
		НавигационнаяСсылка = Представление;
	КонецЕсли;
КонецПроцедуры
Показать


В-третьих, нужно добавить обработку своей навигационной ссылки в модуле приложения:

Процедура ОбработкаПереходаПоНавигационнойСсылке(ДанныеПереходаПоНавигационнойСсылке, СтандартнаяОбработка)
	
	НачалоВхождения = СтрНайти(ДанныеПереходаПоНавигационнойСсылке.ОтносительнаяНавигационнаяСсылка, "e1cib/app/Обработка.Тест_НавигационнаяСсылка?ref=");
	Если НачалоВхождения > 0 Тогда
		СтандартнаяОбработка = Ложь;
		// В конце строки могут быть управляющие символы (например ETX), которые невозможно передать с клиента на сервер
		ГУИД = Лев(ДанныеПереходаПоНавигационнойСсылке.ПараметрыНавигационнойСсылки.Получить("ref"), 36); 
		ПараметрыОткрытия = Новый Структура("ГУИД", ГУИД);
		ОткрытьФорму("Обработка.Тест_НавигационнаяСсылка.Форма.МояФорма", ПараметрыОткрытия);
	КонецЕсли;
	
КонецПроцедуры
Показать


В-четвертых, в форме обработки нужно обработать полученный параметр в ПриСозданииНаСервере:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Параметры.Свойство("ГУИД") Тогда
		ГУИД = Параметры.ГУИД;
	КонецЕсли;
КонецПроцедуры


На что влияет Ключ в ОбработкаПолученияНавигационнойСсылки - я уже не помню :)
10. salexdv 2367 20.12.23 13:47 Сейчас в теме
(7) Я пробовал это сделать. На платформе 8.3.23 не получилось. Не исключаю, что просто у меня кривые руки. Спасибо за примеры!
12. comptr 36 20.12.23 13:51 Сейчас в теме
(10) этот пример работает и на 22-й и на 24-й платформе.
Прикрепленные файлы:
НавигационнаяСсылкаВОбработке.cf
8. Serg O. 306 20.12.23 13:39 Сейчас в теме
прикольно, большой +

небольшие замечания...
1) если обработка анализирует локальную папку (синхронизированную с git-репозиторием), то она должна (и будет) работать и при ручных выгрузках в файлы... с последующей (ручной) заливкой в gitHub.

2) кроме gitsynс есть выгрузка внешних отчетов/обработок и последующая раскладка файлов epf / erf в текстовые файлы... с помощью плагина OneScript - Precommit1C ... которые так же будут анализироваться в git
а значит и в этой обработке то же.

и вообще любые файлы txt, csv, md можно анализировать (и тут наверное тоже)...
а файлы Word, Excel, схемы, графики и картинки даже git не умеет анализировать
11. salexdv 2367 20.12.23 13:49 Сейчас в теме
(8) Первый вариант должен работать. Второй вариант, возможно, не взлетит без доработки. Надо попробовать. Спасибо!
Файлы отличные от *.bsl и *.xml анализировать смысла особо не вижу, если только *.mxl еще.
9. comptr 36 20.12.23 13:45 Сейчас в теме
Возможно, стоит сразу делать это не отдельной обработкой, а конфигурацией? Тогда можно хранить результаты ревью в документе, раскидав всю инфу о процессе по реквизитам и табличным частям. Какие-то сложные вещи можно закидывать в реквизиты с типом ХранилищеЗначений.
Ну или хотя бы справочник, для начала.
dmpas; salexdv; +2 Ответить
13. user1636469 20.12.23 14:49 Сейчас в теме
зачем это, если есть EDT
14. smit1c 106 20.12.23 14:55 Сейчас в теме
18. nixel 1447 21.12.23 14:17 Сейчас в теме
@salexdv приходи в чат, все интеграции с бсл лс какие надо настроим) веб-сокеты в релизе, если вдруг бсл лс не реагирует на какое-то действие в diff-режиме - пингуй, подкрутим или придумаем как обойти на стороне обработки.

А так - огонь-огонь!
alei1180; Totoro; salexdv; +3 Ответить
19. salexdv 2367 21.12.23 15:30 Сейчас в теме
(18) Спасибо за классный продукт!
21. salexdv 2367 23.12.23 16:03 Сейчас в теме
Новое:
1. Добавил поставку в виде расширения, где можно делиться результатом в виде навигационных ссылок
2. Добавил вывод замечаний BSL Language Server в виде маркеров и CodeLens
3. Добавил возможность выбора веток
22. iD1n 14 27.12.23 09:56 Сейчас в теме
23. TheRunMan 09.01.24 11:01 Сейчас в теме
Чет не работает

Репозиторий с исходниками есть, открываю его, комиты видит, а справа список объектов пустой и соответственно изменения тоже не отображаются

Upd: Оказывается это работает только если git инициализирован прямо вместе с исходниками, указать например подпапку src/cf нельзя, просто ничего не отображается тогда. Странно конечно. Мне кажется редко можно увидеть, что в гите лежат чисто исходники и больше ничего.
24. salexdv 2367 09.01.24 13:34 Сейчас в теме
(23) Такого быть не должно. По коммитам определяется "корень" конфигурации и от него уже вычисляются все изменения метаданных. Проверю.
25. TheRunMan 10.01.24 04:45 Сейчас в теме
(24) Ну может я чет не так делаю конечно, просто указал папку где лежит .git и все он комиты видит и больше ничего. Указывал и подпапку, тогда там куча ошибок сыпет каких-то и тоже не отображает. Попробовал вот как я выше описал, тогда все ок.
26. salexdv 2367 11.01.24 14:49 Сейчас в теме
(25) Одной из причин такого поведения могло быть изменение каталога хранения исходников конфигурации. Доработал, теперь корень конфигурации определяется иначе и такой проблемы быть не должно.
27. a_n_d_rey 12.09.24 13:13 Сейчас в теме
Спасибо за обработку, пользуемся командой уже более полугода. Супер!!! С нетерпением ждем развития по количеству анализируемых изменений и особенно "Добавить возможность отвечать на замечания, выявленные в процессе Code Review" - этого реально не хватает для общения в рамках задачи ревью. Может есть ориентировочные сроки по реализации фичи ответа на замечания?
28. salexdv 2367 28.04.25 16:53 Сейчас в теме
Новое:
1. Поддержка vanessa-bootstrap и любых других репозиториев, где исходники основной конфигурации могут лежать вместе с исходниками расширений
2. Сворачивание неизмененных областей (только windows)
Прикрепленные файлы:
Оставьте свое сообщение