В этой статье я хотел бы поделиться с вами нашим внутренним инструментом для проведения ревью. Данный инструмент заметно упростил процесс ревью на определенном этапе работы.
На момент создания данного инструмента в команде было задействовано 15 разработчиков, и 6 из них занимались проведением ревью кода.
Результаты ревью фиксировались в комментариях в JIRA, что позволяло всем членам команды быть в курсе проделанной работы и результатов проверки.
Используется более 5 конфигураций, включая ЗУП, БП, УАТ2, ЕРП УХ, КА 1.1.
У нас возникали проблемы с ограниченностью ресурсов при использовании EDT для перехода всей команды.
SonarQube используется в работе, но он проверяет только основное хранилище.
Разработчик реализуют задачу в своей базе потом переносит это в общее хранилище.
Мы активно работаем над решением проблемы, связанной с выполнением проверок SonarQube на базе разработчика, в которой он реализовал задачу, до помещения кода в общее хранилище. Также хотим перенести процесс ревью в GitLab. Пока мы ищем оптимальное решение нужен был инструмент, который упростит процесс ревью и уменьшит объем рутинной работы.
Возникновение идеи было связано с желанием упростить процесс написания комментариев и обеспечить единый стандарт оформления. Цель - помочь разработчикам максимально быстро решать возникающие проблемы и сократить время ревьювера на рутинную работу.
На слайде приведен пример комментария и его составных частей. Особое внимание следует уделить блоку повторяющихся ошибок. Если за последний месяц одинаковая ошибка была совершена более одного раза и превышает установленный лимит, то в конце комментария добавляется блок со статистикой этих ошибок. Цель – самостоятельная работа над ошибками, чтобы ревьюверам не приходилось следить и напоминать об одних и тех же проблемах.
Для начала работы с функционалом необходимо создать персональный токен доступа в JIRA и установить его в карточке сотрудника. Для начала ревью необходимо вставить ссылку на задачу, в которой будет размещен комментарий. Сотрудник будет автоматически подтянут, после чего вы можете начать выявлять ошибки, заполнять дополнительные аналитические данные (например, категории и проекты) и отправлять данные в JIRA, нажав кнопку.
В настоящее время в систему загружено 213 ошибок и 53 категории включая ошибки BSL и ошибки из других источников. В конце статьи будут прикреплены несколько ссылок на материалы по code review, которые мы использовали для обнаружения и исправления ошибок.
Функционал связанных ошибок помогает нам обращать внимание на работу с Phoenix bsl и другими инструментами. Например, стикер, взятый с одной из наших встреч по обсуждению частых замечаний. Частота данного замечания заметно сократилась с момента ввода в эксплуатацию инструмента.
Пока что, для нас использование отдельного инструмента оказалось более эффективным, чем добавление собственных проверок в SonarQube. Такой подход позволяет нам быстро находить и исправлять ошибки, не затрачивая много времени на разработку и настройку собственных проверок в SonarQube.
Работа со скриншотами построена на внешней компоненте VanessaExt, работа идет через буфер обмена.
Вы можете делать скриншоты в любой программе, затем добавлять рамки и копировать в буфер обмена, чтобы вставить уже готовые скриншоты в программе.
Команды для работы со скриншотами имеют горячие клавиши, которые легко запоминаются. Кроме того, есть возможность получить доступ к скриншотам через кнопку или ячейку с признаком наличия скриншотов. Работа со скриншотами доступна как в самом документе, так и в подборе ошибок.
Для удобства работы с кодом встроен редактор, который многие встречали на просторах 1С, основывающийся на редакторе 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) без использования технологической платформы с максимально приближенной структурой метаданных.
Материалы
- Диагностики - BSL Language Server
- OneStyle
- Чек-листы для проведения Code Review
- По следам код-ревью
- Красота разработки в 1С, или художественная верстка кода
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Антипаттерны программирования в 1С
- Набор стикеров "DevRunner"
- Набор стикеров "Разработчик"
- saby v8unpack
Инструменты
- reviewer
- Phoenix bsl
- VanessaExt
- Консоль кода для 1С 8.3 (Управляемые и обычные формы)
- ones-formatting
- Smart Configurator
- Smart Configurator 2
- YAXUnit
- coverage-cli
- Презентация разработана с помощью редактора Canva
- В роли редактора СhatGPT
Мобильная разработка:
- Переносим HTML интерфейс на 1С
- Взаимодействие с NFC через мобильную платформу 1С
- Простое мобильное приложение на мобильной платформе 1С
1С Специалист:
- [ERP] Бюджетирование. 1С:Специалист-консультант. Часть 2
- [ERP] Бюджетирование. 1С:Специалист-консультант. Часть 1
- [Специалист-консультант] ERP (Производство и ремонты, Управленческий учет, Бюджетирование) + УТ. Решения и шпаргалки к четырем экзаменам
- [ERP] Планирование и выполнение ремонтов
- Решение задач и материалы для подготовки в одном архиве для "1С:Специалист по конфигурированию и внедрению торговых решений" / "Специалист УТ 11"
Перенос данных:
Интеграции:
Прочее: