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

28.04.25

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Git Code Review (расширение)
.cfe 3,02Mb ver:20250428
44 1 850 руб. Купить
Git Code Review (обработка)
.epf 3,01Mb ver:20250428
63 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

См. также

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

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

04.08.2025    2742    ZigRinat85    5    

32

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

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

1 стартмани

29.07.2025    2542    2    gorsheninsn    6    

26

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

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

22.07.2025    5026    ktb    17    

34

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

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

14.07.2025    1594    bborisko    0    

8

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

В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.

11.06.2025    2863    AlexF1    4    

8

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

В процессе использования 1С:EDT и репозитория Git для обновлений релизов доработанных конфигураций появилась необходимость в регулярной загрузке конфигураций от вендора 1С в Git-репозиторий. Описанное в статье решение позволяет автоматизировать эту операцию и может быть полезным специалистам, занимающимися обновлениями с использованием 1C:EDT+Git

21.05.2025    4162    vladimir_iclsoft    3    

20

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

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

05.02.2025    5672    Nonik    10    

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

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

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


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

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


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

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


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

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

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

и вообще любые файлы txt, csv, md можно анализировать (и тут наверное тоже)...
а файлы Word, Excel, схемы, графики и картинки даже git не умеет анализировать
11. salexdv 2406 20.12.23 13:49 Сейчас в теме
(8) Первый вариант должен работать. Второй вариант, возможно, не взлетит без доработки. Надо попробовать. Спасибо!
Файлы отличные от *.bsl и *.xml анализировать смысла особо не вижу, если только *.mxl еще.
9. comptr 51 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 1460 21.12.23 14:17 Сейчас в теме
@salexdv приходи в чат, все интеграции с бсл лс какие надо настроим) веб-сокеты в релизе, если вдруг бсл лс не реагирует на какое-то действие в diff-режиме - пингуй, подкрутим или придумаем как обойти на стороне обработки.

А так - огонь-огонь!
alei1180; Totoro; salexdv; +3 Ответить
19. salexdv 2406 21.12.23 15:30 Сейчас в теме
(18) Спасибо за классный продукт!
21. salexdv 2406 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 2406 09.01.24 13:34 Сейчас в теме
(23) Такого быть не должно. По коммитам определяется "корень" конфигурации и от него уже вычисляются все изменения метаданных. Проверю.
25. TheRunMan 10.01.24 04:45 Сейчас в теме
(24) Ну может я чет не так делаю конечно, просто указал папку где лежит .git и все он комиты видит и больше ничего. Указывал и подпапку, тогда там куча ошибок сыпет каких-то и тоже не отображает. Попробовал вот как я выше описал, тогда все ок.
26. salexdv 2406 11.01.24 14:49 Сейчас в теме
(25) Одной из причин такого поведения могло быть изменение каталога хранения исходников конфигурации. Доработал, теперь корень конфигурации определяется иначе и такой проблемы быть не должно.
27. a_n_d_rey 12.09.24 13:13 Сейчас в теме
Спасибо за обработку, пользуемся командой уже более полугода. Супер!!! С нетерпением ждем развития по количеству анализируемых изменений и особенно "Добавить возможность отвечать на замечания, выявленные в процессе Code Review" - этого реально не хватает для общения в рамках задачи ревью. Может есть ориентировочные сроки по реализации фичи ответа на замечания?
28. salexdv 2406 28.04.25 16:53 Сейчас в теме
Новое:
1. Поддержка vanessa-bootstrap и любых других репозиториев, где исходники основной конфигурации могут лежать вместе с исходниками расширений
2. Сворачивание неизмененных областей (только windows)
Прикрепленные файлы:
29. Chaprel 3 08.08.25 09:01 Сейчас в теме
(28) Добрый день!
Есть инструкция как все настроить?
30. salexdv 2406 09.08.25 11:33 Сейчас в теме
(29) Всё, что нужно настроить, это gitsync. Посмотрите документацию к нему. Потом просто выбираете путь к репозиторию и всё должно заработать.
Оставьте свое сообщение