Ревьювер. Инструмент для проведения 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 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим основные принципы шаблона проектирования "Стратегия" на простом примере.

25.06.2024    2288    MadRave    30    

22

Рефакторинг и качество кода Программист Платформа 1С v8.3 Абонемент ($m)

В статье расскажу и покажу процесс проведения Code-review на примере обработки с GitHub.

1 стартмани

04.06.2024    4945    mrXoxot    55    

40

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

Поделюсь своим опытом аудита кода авторских продуктов с Infostart.ru как одним из элементов применения DevOps-практик внутри Инфостарт. Будет настоящий код, боевые скриншоты, внутренние мемы от команды ИТ-лаборатории Инфостарт и прочее мясо – все, что любят разработчики.

10.04.2024    10675    artbear    84    

104

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

Предлагаю вашему вниманию советы мастеров древности. Программисты прошлого использовали их, чтобы заострить разум тех, кто после них будет поддерживать код. Гуру разработки при найме старательно ищут их применение в тестовых заданиях. Новички иногда используют их ещё лучше, чем матёрые ниндзя. Прочитайте их и решите, кто вы: ниндзя, новичок или, может быть, гуру? (Адаптация статьи "Ниндзя-код" из учебника JavaScript)

01.04.2024    3069    DrAku1a    15    

35

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

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

01.04.2024    901    Prepod2003    6    

2

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

Когда понадобился новый оператор, но его нет в синтакс-помощнике, что делать?

18.03.2024    1659    ZhokhovM    5    

4

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

Когда разработчик платформы решил пойти на кухню за кофе, а проверку препроцессоров не добавил, и вот тут-то и началось: "Что, опять все сломалось? Ну и кофе же я забыл сделать!".😅

18.03.2024    3412    ZhokhovM    4    

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

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

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

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

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

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

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

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

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