Ревьювер. Инструмент для проведения code review

16.05.23

Разработка - Рефакторинг и качество кода

Если вы работаете в команде разработчиков, то, вероятно, знакомы с процессом код-ревью. Это необходимый шаг в разработке программного обеспечения, который помогает выявить ошибки и улучшить качество кода. Однако, процесс ревью может занимать много времени и быть довольно утомительным, особенно на ранних этапах разработки. Мы столкнулись с этими проблемами в команде и решили упростить процесс код-ревью с помощью внутреннего инструмента. Он значительно облегчил процесс ревью на определенном этапе работы и сократил время на рутинную работу. В результате, мы смогли значительно упростить процесс код-ревью в команде, что сэкономило время и улучшило качество кода.

В этой статье я хотел бы поделиться с вами нашим внутренним инструментом для проведения ревью. Данный инструмент заметно упростил процесс ревью на определенном этапе работы.

На момент создания данного инструмента в команде было задействовано 15 разработчиков, и 6 из них занимались проведением ревью кода. 

Результаты ревью фиксировались в комментариях в JIRA, что позволяло всем членам команды быть в курсе проделанной работы и результатов проверки.

Используется более 5 конфигураций, включая ЗУП, БП, УАТ2, ЕРП УХ, КА 1.1. 

У нас возникали проблемы с ограниченностью ресурсов при использовании EDT для перехода всей команды.

SonarQube используется в работе, но он проверяет только основное хранилище. 

Разработчик реализуют задачу в своей базе потом переносит это в общее хранилище. 

Мы активно работаем над решением проблемы, связанной с выполнением проверок SonarQube на базе разработчика, в которой он реализовал задачу, до помещения кода в общее хранилище. Также хотим перенести процесс ревью в GitLab. Пока мы ищем оптимальное решение нужен был инструмент, который упростит процесс ревью и уменьшит объем рутинной работы.

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

На слайде приведен пример комментария и его составных частей. Особое внимание следует уделить блоку повторяющихся ошибок. Если за последний месяц одинаковая ошибка была совершена более одного раза и превышает установленный лимит, то в конце комментария добавляется блок со статистикой этих ошибок. Цель – самостоятельная работа над ошибками, чтобы ревьюверам не приходилось следить и напоминать об одних и тех же проблемах.


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

 

 

В настоящее время в систему загружено 213 ошибок и 53 категории включая ошибки BSL и ошибки из других источников. В конце статьи будут прикреплены несколько ссылок на материалы по code review, которые мы использовали для обнаружения и исправления ошибок.

Функционал связанных ошибок помогает нам обращать внимание на работу с Phoenix bsl и другими инструментами. Например, стикер, взятый с одной из наших встреч по обсуждению частых замечаний. Частота данного замечания заметно сократилась с момента ввода в эксплуатацию инструмента.

Пока что, для нас использование отдельного инструмента оказалось более эффективным, чем добавление собственных проверок в SonarQube. Такой подход позволяет нам быстро находить и исправлять ошибки, не затрачивая много времени на разработку и настройку собственных проверок в SonarQube.

Работа со скриншотами построена на внешней компоненте VanessaExt, работа идет через буфер обмена.

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

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

Для удобства работы с кодом встроен редактор, который многие встречали на просторах , основывающийся на редакторе Monaco. Также было добавлено улучшенное форматирование кода OneStyle, входящее в первую версию Smart Configurator

Редактор кода используется для добавления решения на уровне ошибки и в самом документе.

Кроме того, разработчики следят за форматированием кода и для этого используют еще один внутренний инструмент ones-formatting на основе двух версий Smart Configurator. Это позволяет существенно упростить работу с кодом в системе 1С и повысить эффективность работы разработчиков.

Справочник "Ошибки" является основным объектом в работе подсистемы. Каждый элемент справочника содержит информацию о типе и важности ошибки, которые знакомы нам по SonarQube.

Кроме того, в элементах справочника можно задать описание ошибки, указать ссылку на источник, а также указать решение на уровне ошибки. Это позволяет быстро определить и исправить ошибку на ранней стадии разработки.

Настройки подсистемы достаточно гибкие, что позволяет пользователям настраивать ее в соответствии с их потребностями.

Например, можно отключить практически все функции, кроме отправки комментариев в JIRA. Это удобно для тех, кто не нуждается во всех функциях подсистемы, но хочет использовать ее только для комментирования задач в JIRA.

Из всех настроек стоит отдельно остановится на показателях:

  • Использовать вес ошибки. В SonarQube мы анализируем ошибки в разрезах тип и важность, а это альтернативный вариант анализа динамики совершенных ошибок, для тех кому удобнее анализировать в числовом формате. Каждой ошибке задается ее вес.
  • Использовать стори поинты. Этот абстрактный  показатель был разработан для объединения в себе размер и сложность задачи.

Развитие блока аналитики не является приоритетным на данный момент. Пока идет накопление данных в системе для дальнейшего анализа.

Есть карта компетенций в разрезе проектов и категорий, используем для определения различных перекосов.

Реализована работа с метаданными проекта.

Для выгрузки метаданных из конфигурации используется специальная обработка "ВыгрузкаМетаданныхПроекта.epf", которая позволяет выгрузить метаданные в формате JSON. Кроме того, есть возможность частичной выгрузки метаданных.

Для загрузки метаданных используется карточка проекта, где можно выбрать режим полной замены или добавления новых метаданных. В карточке проекта также можно просмотреть все метаданные проекта. Это позволяет удобно управлять метаданными проекта и изменениями, которые вносятся в них. Эта функциональность значительно упрощает работу с метаданными проекта в системе.

Функционал по работе с метаданными проекта позволяет привязывать замечания к метаданным в документе "Ревью". Для этого в табличную часть "Замечания" были добавлены два новых реквизита: проект и метаданные.

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

Благодаря последним обновлениям, теперь в редакторе кода стало проще работать с метаданными проекта. Новый функционал позволяет передавать метаданные проекта прямо в редактор кода, что существенно экономит время и упрощает процесс написания кода.

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

Кроме того, работа с подсказками стала гораздо удобнее и интуитивно понятнее. Теперь вам не придется искать нужную информацию в различных приложениях или документациях – все необходимое можно найти прямо в редакторе кода.

Новый формат комментариев в JIRA: комментарии разделены по проектам и метаданным.

Теперь пользователи могут оставлять замечания и предложения по доработке в конкретных проектах и собирать данные аналитики в отчетах с новыми измерениями в регистрах. Это значительно облегчит работу с данными и увеличит возможности анализа.

Разработка начиналась с нуля без использования БСП, поскольку необходимо было проверить несколько гипотез.

В дальнейшем были добавлены некоторые подсистемы БСП для обеспечения работы нескольких пользователей.

Среди основных добавленных подсистем можно выделить:

  • Дополнительные отчеты и обработки
  • Управление доступом. Добавлены два поставляемых профиля: ревьювер, тимлид
  • Даты запрета изменения
  • Версионирование объектов
  • Контактная информация. Для заполнения электронной почты сотрудника и использование ее в интеграциях

Добавление этих подсистем значительно расширило функциональные возможности и улучшило управление процессами работы с данными в системе. Теперь пользователи могут более эффективно работать с отчетами и объектами, а также контролировать доступ к ним.

Конфигурацию, разработанную с использованием указанных инструментов, проверяем с помощью SonarQube.

Для написания юнит-тестов используем YAXUnit.

Для расчета покрытия тестами используем Coverage-cli.

На данный момент покрытие тестами составляет 40 процентов только за счет юнит-тестов. Для увеличения этого показателя будем добавлять сценарные тесты. Увеличение покрытия тестами позволит повысить качество кода и уменьшить количество ошибок при разработке, что в конечном итоге приведет к более стабильной работе инструмента.

По интеграциям в планах Sonar и GitLab. Также добавить отдельную подсистему для управления проектами, загрузкой ошибок и статистики из SonarQube.

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

Улучшить функциональность продукта, добавив блок аналитики. Этот блок будет предоставлять нашим пользователям различные отчеты, которые помогут им быстро получать информацию о разных аспектах их работы. Будем добавлять отчеты по ошибкам, сотрудникам и проектам, а также по другим важным параметрам, которые помогут нашим пользователям максимально эффективно проводить анализ.

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

Открытие проекта для сообщества на GitHub для наращивания функционала и решения проблем, с которыми сталкиваются другие команды. В репозитории пока будут размещаться презентации, статьи, планы и другая информация о проекте.
 

FAQ

Что делать, если нужно отразить не ошибку, а предложение по доработке?

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

Как реализовано повторное ревью?

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

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

 

P.S.

По вопросам и предложениям можете создать issues на GitHub.

Также хотелось бы поддержать проект saby v8unpack – утилита для сборки и распаковки бинарных файлов 1С:Предприятие 8.х (cf, cfe, epf) без использования технологической платформы с максимально приближенной структурой метаданных.

Материалы

Инструменты

 
 Другие материалы, которые могут вас заинтересовать

 Мобильная разработка:

1С Специалист:

Перенос данных:

Интеграции:

Прочее:

ревь code review ревьювер git edt gitlab sonar sonarqube phoenix bsl YAXUnit coverage-cli VanessaExt качество кода SmartConfigurator

См. также

Инструментарий разработчика Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    5219    349    wonderboy    38    

111

Linux Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

В третьей статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим подходы к рефакторингу платформеннозависимого кода

11.02.2025    789    it-expertise    0    

2

Рефакторинг и качество кода Linux Программист Платформа 1С v8.3 Бесплатно (free)

Во второй статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, поговорим об особенностях анализа конфигурации 1С на наличие платформеннозависимого кода.

31.01.2025    1459    it-expertise    1    

7

Рефакторинг и качество кода Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

В практике нашей специальной команды по проектам сложных обновлений 1С прошел один из самых объёмных проектов: необходимо было обновить «1С: Бухгалтерия предприятия КОРП 3.0 + БИТ.ФИНАНС». Конфигурация содержала доработки практически по всем типам объектов метаданных. Длительность проекта составила 1 год и 2 месяца и обеспечила полной загрузкой 4 разработчиков на 6 месяцев.

31.01.2025    966    1c-izh    3    

5

Рефакторинг и качество кода Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

В последнее время термин «чистый код» стал очень популярным. Появились даже курсы по данной тематике. Так что же это такое?

16.09.2024    16935    markbraer    66    

43

Рефакторинг и качество кода Программист Бесплатно (free)

В статье рассматривается отказ от использования процедур и унификация формата ответа функций. Способ описывается на примере развития абстрактной информационной системы, работающей с PDF файлами.

10.09.2024    1330    acces969    4    

6

Рефакторинг и качество кода Бесплатно (free)

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

28.08.2024    1835    Chernazem    3    

6

Рефакторинг и качество кода Программист Бесплатно (free)

SOLID – принципы проектирования программных структур (модулей). Акроним S.O.L.I.D. образован из первой буквы пяти принципов. Эти принципы делают код более гибким, упрощают разработку. Принято считать, что принципы SOLID применимы только в объектно-ориентированном программировании. Но их можно успешно использовать и в 1С. Расскажем о том, как разобраться в принципах SOLID и начать применять их при работе в 1С.

22.08.2024    12233    alex_sayan    41    

56
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1566 16.05.23 12:45 Сейчас в теме
Интересный полезнейший инструмент. на чем написан?

Из статьи непонятно, планируете ли выложить его в опенсорс?
или каким-то другим способом распространять?
3. fishca 1259 16.05.23 12:59 Сейчас в теме
А где собственно сам reviewer? Как его посмотреть? Пока доступна только презентация?
4. leobrn 692 16.05.23 13:03 Сейчас в теме
(1) Отдельная конфигурация на 1С также может как отдельная подсистема быть встроена. Выложить планируем, сроков пока нет.
itoptimum; +1 Ответить
15. Tahallus 441 16.10.24 23:34 Сейчас в теме
(4) Как прогресс по релизу ? или забросили инструмент
5. leobrn 692 16.05.23 13:04 Сейчас в теме
(3) Пока только презентация, собрать обратную связь и т.д.
10. webester 26 17.05.23 10:15 Сейчас в теме
(5)
Пока только презентация, собрать обратную связь и т.д.

Заголовки впечатляющие идеи интересные. Как это работает непонятно. Надо смотреть на код. Ну или хотя бы на примеры.
investec; leobrn; +2 Ответить
6. VVi3ard 53 16.05.23 17:31 Сейчас в теме
Что то не понятно как это должно работать, если у разработчика будет доступ к этому инструменту он сможет сам править все его замечания.
И получается что когда дойдет до ревьювера там будет "идеальный" с точки зрения сонар куба код.

А если у разработчика не будет доступа к инструменту, то это будет выглядеть странно, чисто способ самоутвердиться за счёт большого количества замечаний в стиле "длина строки на 1 символ больше чем положено по стандарту".

И с этим никто не захочет связываться из адекватных людей.

Разве что Джунов кошмарить и резать им ЗП.

В итоге, будет у меня как у разработчика возможность просмотреть что выдаст ревьювер? до передачи человеку и выставления баллов?
7. fishca 1259 16.05.23 18:38 Сейчас в теме
Тема интересная, но без конкретного примера это просто набор скринов, если честно.
sulfur17; +1 Ответить
8. leobrn 692 17.05.23 06:21 Сейчас в теме
(7) Учту. По возможности добавлю гифки/видео демонстрации функционала.
9. alex_bob 258 17.05.23 06:49 Сейчас в теме
Плюсую за подборку ссылок.
11. VSvintsov1 18.05.23 06:02 Сейчас в теме
хорошая вещь - 99% найденных не оптимальных строк кода будет действительно не оптимальными..
но вот по примеру: РольДоступна(...) и Пользователи.РолиДоступны(...) - // Возвращает доступность хотя бы одной из указанных ролей или полноправность
а в параметрах нет возможности отключить проверку на полноправность.

бывают случаи когда "полноправность" (доступ к роли ПолныеПрава) не является критерием проверки.
Т.е. если нет роли "ГлавныйВСамописнойПодсистеме", то не считается ...

хорошо бы учитывать комментарии программиста в коде - почему так, а не иначе... чтобы ревьювер не тратил время на вопросы.
------
а вообще "опасный" инструмент - похож на автомат-брадобрей из анекдота:
(Петров демонстрирует комиссии автомат-брадобрей. Бреет этот автомат 3-мя движениями - вертикально слева, вертикально справа и горизонтально снизу. Комиссия в шоке - но у всех же лица разные!! Да, отвечает Петров. Но это только в первый раз! :-) )
12. leobrn 692 18.05.23 14:23 Сейчас в теме
(11) Спасибо за обратную связь
13. vandalsvq 1599 19.09.23 10:47 Сейчас в теме
(0) ну а когда инструмент будет в продаже или например в демо, ну или еще как-нибудь кроме картинок, весьма интересных к слову???
investec; abcopel; +2 Ответить
14. EMelihoff 28.05.24 09:36 Сейчас в теме
очень интересно, давайте тестить
Оставьте свое сообщение