Квест → Как хакнуть форму
Прошли: 77
Ревью кода - это часть разработки программного обеспечения, которая подразумевает тестирование исходного кода для идентификации багов на ранней стадии. Процесс код-ревью обычно проводится перед слиянием с кодовой базой.
Эффективное ревью кода предотвращает попадание багов и ошибок в ваш проект путем улучшения качества кода на ранней стадии процесса разработки софта.
В этой статье мы объясним, что такое код-ревью и изучим популярные инструменты, которые помогают организациям с данным процессом.
Содержание
Основная задача ревью кода заключается в проверке любого нового кода на баги, ошибки, а также на соблюдение стандартов качества, установленных организацией. Процесс ревью кода не должен состоять лишь из одностороннего фидбэка. Следовательно, нематериальная польза код-ревью заключается в коллективном улучшении навыков написания кода в команде.
Если вы хотите инициировать процесс ревью кода в вашей компании, вам в первую очередь следует решить, кто будет проводить ревью кода. Если вы - часть небольшой команды, то можете назначить тимлидов просматривать весь код. В более крупной компании с несколькими проверяющими можете внедрить процесс, при котором каждое ревью закрепляется за опытным разработчиком в зависимости от их загруженности.
Далее стоит рассмотреть временные рамки, очередности и минимальные требования принятия запросов на код-ревью.
Наконец, следует учесть как должна даваться обратная связь в процессе ревью кода. Убедитесь, что вы подчеркиваете положительные аспекты кода, попутно предлагая альтернативы в выявленных недостатках.
Ваша обратная связь должна быть достаточно конструктивной, чтобы позволить разработчику понять ваше видение и, при необходимости, начать обсуждение.
-Старайтесь сохранить информативность обратной связи
Проверяющие могут оказаться в "лимбе" достаточно просто, что приводит к более низкой эффективности и даже контрпродуктивности.
Процесс ревью кода критичен, поскольку он не похож на формальный учебный процесс в школах/университетах. Вы можете узнать нюансы языка программирования и менеджмента проектов, но ревью кода - это процесс, который эволюционирует в то время как компания находится в процессе «взросления».
Код-ревью критичен, потому как призван:
Ревью кода впоследствии ведет к улучшению компетенции членов команды. В то время как старший разработчик осуществляет код-ревью, младший разработчик может использовать обратную связь для улучшения своих навыков программирования.
Существует четыре способа произвести код-ревью.
Такие проверки выполняются за рабочей станцией разработчика, где опытный участник команды просматривает новый код, выдвигая свои предложения в процессе обсуждения. Это самый простой способ проведения код-ревью, который не требует определенной структуры.
Ревью такого типа проводятся до сих пор, неформально, при этом формальный код-ревью также может иметь место. Просмотр "из-за плеча" традиционно происходил лично, в то же время удаленные команды могут следовать этому методу с помощью коллаборативных инструментов.
Хотя код-ревью, проводимые "из-за плеча" - это отличный способ проверить новый код, географически удаленные команды по традиции опирались на электронную почту для ревью кода.
В таком процессе ревью разработчик отправляет diff изменений всей команде разработчиков, как правило, с помощью системы контроля версий (VCS), которые автоматизируют уведомления. Такое сообщение инициирует обсуждение изменений, где члены команды могут запросить будущие изменения, указать на ошибки или запросить уточнения.
-Почтовая рассылка через Google Groups на каждый новый push
Раньше почта была основным способом коммуникации ввиду ее универсальности. Организации с открытым кодом часто поддерживали публичный список рассылки, который также служил средством для обсуждения и предоставления обратной связи по коду.
Несмотря на приход инструментов для ревью кода, списки рассылок до сих пор существуют, хоть и используются они теперь в основном для анонсов и обсуждений.
-Парное программирование порой может быть неэффективно
Парное програмиирование - это непрерывный процесс ревью кода. Двое разработчиков находятся за рабочей станцией, но лишь один из них активно кодит, в то время как другой предоставляет обратную связь в реальном времени.
И хотя это может служить хорошим способом просмотра нового кода и обучения разработчиков, парное программирование потенциально является неэффективным ввиду временных затрат. Такой процесс не позволяет ревьюеру заниматься любой другой продуктивной работой во время такой сессии.
Такой вид код-ревью включает в себя использование специализированного программного обеспечения (ПО) в целях облегчения процесса ревью кода. Обычно инструмент помогает со следующими задачами:
Хотя эти широкие требования инструмент проверки кода, современного инструментария может обеспечить несколько других функций. Мы рассмотрим ряд инструментов анализа кода позже в этом посте.
Главный результат процесса ревью кода - увеличение эффективности. Хотя все вышеперечисленные классические методы ревью кода работали в прошлом, вы можете потерять эффективность, если не перешли на ревью с помощью инструментов. Они автоматизируют процесс ревью кода, так что ревьюер фокусируется непосредственно на самом коде.
Инструмент интегрируется в ваш цикл разработки для инициации ревью кода перед тем как новый код соединен с главной кодовой базой. Вы можете выбрать инструмент, который совместим с вашим стэком технологий для "бесшовного" внедрения в Ваш рабочий процесс.
К примеру, если Вы используете Git для менеджмента кода, TravisCI для непрерывной интеграции, то убедитесь, что Вы выберете инструмент, который поддерживает эти технологии и подходит для процесса разработки.
Есть два типа тестирования кода в разработке ПО: динамическое и статическое.
Динамический анализ включает в себя проверку кода на следование набору правил и проведение unit-тестов, обычно с помощью предопределенного скрипта. Статическое тестирование кода проделывается после того как разработчик пишет новый код для присоединения к текущему коду.
Теперь давайте рассмотрим одни из самых популярных инструментов для код-ревью.
В этом разделе мы будем обозревать самые популярные статические инструменты для код-ревью.
Review Board - это сетевое, open-source решение для ревью кода. Чтобы протестировать этот инструмент, можете либо попробовать демо на их сайте, либо загрузить и установить программу на вашем сервере.
-Обзор Review Board
Язык программирования Python и его установщики, MySQL или PostgreSQL в качестве базы данных, и веб-сервер - таковы требования для использования Review Board на сервере.
Вы можете внедрить Review Board с широким охватом систем контроля версий — Git, Mercurial, CVS, Subversion и Perforce. Также можете связать Review Board с Amazon S3 для хранения скриншотов непосредственно в инструменте.
-Обзор изменений в Review Board
Review Board позволяет выполнять как pre-commit, так и post-commit код-ревью в зависимости от требований. Если вы не интегрировали систему контроля версий, можете использовать diff-файл для загрузки изменений кода в инструменте для ревью.
Графическое сравнение изменений в коде также предоставлено. Вдобавок к ревью кода, Review Board позволяет проводить ревью документов.
Первая версия Review Board вышла более десятилетия назад, однако он до сих пор в активной разработке. Поэтому сообщество Review Board за все эти годы возросло, и вы с большой долей вероятности получите помощь, если имеются какие-либо проблемы при использовании программы.
Review Board – простой инструмент для код-ревью, который можно хостить на своём сервере. Вам стоит попробовать его, если не хотите хостить свой код на публичном веб-сайте.
Crucible – это коллаборативная программа для ревью кода от Atlassian. Она представляет собой коммерческий набор инструментов, позволяющий вам проводить код-ревью, обсуждать планы и изменения, а также обнаруживать баги через множество систем контроля версий.
Crucible предоставляет два платежных плана, один для небольших команд, а другой – для организаций. Небольшой команде необходимо произвести единоразовый платеж размером в $10 для неограниченного количества репозиториев на 5 пользователей. Для больших команд, платежи начинаются от $1100 на 10 пользователей и неограниченного количества репозиториев.
В обоих случаях вам предлагается 30-дневный бесплатный период без требования данных вашей карты.
-Crucible (Источник)
Схоже с Review Board, Crucible поддерживает большое количество систем контроля версий – SVN, Git, Mercurial, CVS и Perforce. Базовая функция – позволить проводить ревью кода. Вдобавок к общим комментариям к коду, он позволяет писать inline-комментарии внутри diff view, чтобы точно указать на то, что вы хотели сказать.
Crucible хорошо внедряется с другими продуктами для организаций от Atlassian, например Confluence и Enterprise BitBucket. Хотя, возможно, вы получите наибольшую пользу от Crucible, используя его вместе с Jira, Issue от Atlassian и Project Tracker. Это позволит выполнять pre-commit-ревью и аудиты добавляемого кода.
Если вы используете GitHub для поддержания ваших Git-репозиториев в облаке, то вы, вероятно, уже использовали форки (forks) и pull-запросы (pull requests) для ревью кода.
-GitHub в Pull-запросе
GitHub имеет встроенный инструмент для код-ревью в pull requests. Инструмент для ревью кода прилагается в связке с базовым сервисом GitHub, который предлагает бесплатный план для разработчиков. Бесплатный план ограничивает количество пользователей до трех в приватных репозиториях. Платные планы начинаются от $7 в месяц.
GitHub позволяет ревьюеру, который имеет доступ к репозиторию, "привязывать" себя к pull-запросам и завершать ревью. Разработчик, который принял pull request, может также запросить ревью у администратора.
В дополнение к обсуждению на общем pull-запросе, вы можете анализировать diff, писать строчные (inline) комментарии, и проверять историю изменений. Инструмент ревью кода также позволяет разрешать простые конфликты в Git через веб-интерфейс. GitHub даже позволяет интегрировать дополнительные инструменты для ревью через маркетплейс, для большей надежности.
Ревью кода в GitHub - это отличный инструмент, если вы уже пользуетесь платформой. Он не требует никаких дополнительных установок или настройки. Основная проблема с инструментом код-ревью в GitHub - это то, что он поддерживает только git-репозитории, размещенные на GitHub. Если вы ищете похожий инструмент для ревью кода, который можно скачать и хостить на своем сервере, можете попробовать GitLab.
Phabricator - это набор инструментов с открытым исходным кодом от Phacility, которые помогут вам в ревью кода. В то время как вы можете скачать и установить набор софта для ревью кода на своём сервере, Phacility также предоставляет хостируемую в облаке (cloud-hosted) версию Phabricator.
Ограничений, если установить его на своем сервере нет. Впрочем, вам будет выставлен счёт в $20 на каждого пользователя в месяц (с верхним краем в $1000/месяц), также получая при этом поддержку. Также имеется 30-дневный бесплатный пробный период.
-Phabricator
Phabricator поддерживает три самых популярных системы контроля версий — Git, Mercurial, и SVN. С его помощью можно управлять локальными репозиториями и отслеживать внешне размещенные репозитории. Также, можете масштабировать его до нескольких серверов.
Phabricator предоставляет детализированную платформу для общения с участниками команды. Вы можете либо совершить pre-commit ревью нового сотрудника, либо провести ревью на недавно представленный код. Также можете провести ревью на присоединенный (merged) код, такая функция называется “аудит”. Вот сравнение между код-ревью и аудитом в Phabricator.
Дополнительные инструменты Phabricator помогают в общем цикле разработки программного обеспечения. Например, он предоставляет встроенный трекер, чтобы отслеживать баги и особенности. Вы также можете создать вики-страницу для своего программного обеспечения через Phriction. Для того чтобы интегрировать инструмент в юнит-тесты, можете использовать инструмент CLI. Помимо этого, вы можете строить приложения через Phabricator с помощью его API.
Подводя итог, Phabricator предоставляет массу возможностей, которые помогут сделать процесс разработки более эффективным. Есть особый смысл выбрать этот инструмент, если проект находится на ранней стадии. Если вы не обладаете необходимыми знаниями, чтобы установить его на своем сервере, следует выбрать хостируемую версию программы.
Collaborator от SmartBear - это инструмент для ревью кода и документов для команд разработчиков. В дополнение к ревью исходного кода, Collaborator позволяет командам провести ревью проектной документации. Лицензионный пакет на 5 пользователей оценивается в $535 в год. Бесплатная пробная версия доступна исходя из ваших бизнес-требований.
-Collaborator Review Source
Collaborator поддерживает большое количество систем контроля версий как Subversion, Git, CVS, Mercurial, Perforce, и TFS. Он хорошо справляется с интеграцией в популярные инструменты управления проектами и IDE (интегрированные среды разработки), такие как Jira, Eclipse, и Visual Studio.
Этот инструмент также позволяет делать отчеты и анализировать ключевые показатели, характеризующие эффективность код-ревью. Кроме того, Collaborator помогает в управлении аудитом и отслеживании багов. Если ваш стек технологий включает в себя корпоративное программное обеспечение, и если вам нужна поддержка для настройки процесса ревью кода, стоит попробовать Collaborator.
CodeScene является инструментом ревью кода, который выходит за рамки традиционного статического анализа кода. Он осуществляет поведенческий анализ с помощью добавления временного измерения для анализа развития вашей кодовой базы. CodeScene в двух формах: облачное решение и локальное решение.
-Анализ в ревью кода CodeScene
CodeScene обрабатывает историю контроля версий для визуализации кода. Вдобавок к этому, он применяет алгоритмы машинного обучения для выявления социальных закономерностей и скрытых рисков в коде.
Через историю контроля версий CodeScene профилирует каждого члена команды, чтобы отрисовать диаграмму их базы знаний и создания внутрикомандных зависимостей. Он также вводит концепцию хот-спотов (hotspots) в репозитории путем определения файлов, которые подвергаются наиболее активной разработке.Эти хот-споты требуют высокого внимания в дальнейшем.
-Knowledge-диаграммы в CodeScene
Если вы ищете инструмент, который выходит за рамки стандартного, диалогового инструмента ревью кода, однозначно попробуйте бесплатную пробную версию CodeScene. Чтобы узнать больше о лежащей в основе логике CodeScene в поведенческом анализе кода, взгляните на этот документ про Сценарии ис пользования CodeScene.
Visual Expert - это решение уровня предприятия для ревью кода, специализирующееся в коде баз данных. Он имеет поддержку только трех платформ: PowerBuilder, SQL-сервер, и Oracle PL/SQL. Если вы используете любую другую СУБД, то не сможете внедрить Visual Expert для код-ревью.
Бесплатная пробная версия доступна, но для этого нужно отправить запрос, чтобы узнать цену.
-обзор Visual Expert (Источник)
В дополнение к традиционному код-ревью, Visual Expert анализирует каждое изменение в коде, чтобы предвидеть возможные проблемы с его исполнением в связи с изменениями. Также, инструмент может автоматически генерировать полную документацию приложения из кода.
Если вы используете PowerBuilder, SQL-сервер или Oracle PL/SQL и хотели бы специализированный инструмент для ревью кода для ваших потребностей, стоит попробовать Visual Expert.
Геррит - это бесплатный веб-инструмент с открытым исходным кодом для Git-репозиториев, написанных на Java. Для запуска Gerrit Вам нужно скачать исходный код и запустить его в Java. Вот процесс установки standalone-версии Gerrit.
-Gerrit
Gerrit сочетает в себе функциональность багтрекера и инструмент для код-ревью. В ходе ревью изменения отображаются бок-о-бок в едином diff, с возможностью начать обсуждение по каждой добавленной строке кода. Этот инструмент работает как промежуточный этап между разработчиком и центральным репозиторием. Кроме того, Gerrit также включает в себя систему голосования.
Если вы обладаете техническими знаниями для установки и настройки Gerrit и ищете бесплатный инструмент для ревью кода, он станет идеальным решением для ваших проектов.
Rhodecode - это веб-инструмент, который помогает в проведении ревью кода. Он поддерживает три системы контроля версий: Mercurial, Git и Subversion. В облачной версии стоимость Rhodecode начинается от $8 на пользователя в месяц, в то время как локальное решение стоит $75 на одного пользователя в год. Хотя это программное обеспечение предназначено для предприятий, его комьюнити-версия, которая является бесплатной и с открытым исходным кодом, может быть загружена и скомпилирована бесплатно.
-Rhodecode
Rhodecode позволяет команде эффективно взаимодействовать через итеративный, диалоговый код-ревью, для повышения качества кода. Инструмент дополнительно содержит слой управления доступом для защищенной разработки.
Кроме того, визуальный changelog (история изменений) помогает вам ориентироваться в истории вашего проекта в различных ветках. Онлайн-редактор кода также предоставлен для внесения небольших изменений через веб-интерфейс.
Rhodecode легко интегрируется в существующие проекты, что делает его отличным выбором для тех, кто ищет веб-инструмент для код-ревью. Следовательно, комьюнити-версия идеально подходит для людей с техническими знаниями, которые ищут бесплатный и надежный инструмент для код-ревью.
Veracode предоставляет набор инструментов для код-ревью, которые позволяют автоматизировать тестирование, ускорить разработку, интегрировать процесс обновления и повысить эффективность проекта. Набор инструментов для код-ревью от Veracode позиционируется как решение по безопасности, которое ищет уязвимости в ваших системах. Они представляют собой набор из двух инструментов для ревью кода:
-Обзор Veracode (Источник)
Ревью кода является частью Анализа Состава ПО, и вы можете выбрать демо-версию Veracode перед полным переходом на данный инструмент. Вот ссылка для запроса котировки.
Reviewable - это инструмент для код-ревью для pull-запросов GitHub. Он является бесплатным для репозиториев с открытым исходным кодом. Планы для приватных репозиториев начинаются от $39 в месяц для десяти пользователей. Поскольку инструмент объединен с GitHub, Вы можете авторизоваться при помощи вашей учетной записи GitHub и начать работу.
-Обзор Reviewable
Если хотите взглянуть на типичный ревью в Reviewable, можете попробовать демо код-ревью.
Интересный момент в Reviewable заключается в том, что он преодолевает некоторые недостатки ревью кода в pull-запросах GitHub. Например, комментарий на строке кода автоматически скрывается GitHub'ом, когда разработчик меняет строку, потому что GitHub предполагает, что проблема была устранена. Но, в реальности, это не всегда так.
Кроме того, GitHub имеет сравнительно низкие лимиты строк для отображения diff 'ов в файле.
Если Вы ищете инструмент, который тесно согласован с GitHub, но хотите больше возможностей, чем простые pull-запросы, Reviewable - ваш выбор.
Если вы пользуетесь Subversion, Peer Review Plugin для Trac предоставляет бесплатный и открытый вариант проведения код-ревью на проектах. Плагин Peer Review интегрируется в Open-source-проект Trac, который представляет собой Вики-страницу и систему отслеживания вопросов (issues) для разработки проектов.
-Обзор Peer Review Plugin для Trac (Источник)
Trac внедряет Вики и issue-трекер в ваши код-ревью, чтобы обеспечить конечное решение. В то время как базовый функционал сравнения изменений и обсуждения всё так же доступен, плагин позволяет создавать настраиваемые рабочие процессы для ваших проектов.
Например, вы можете назначить задачи, которые можно решить, на такие триггеры, как принятие изменения или подтверждение в код-ревью. Вы также можете создавать настраиваемые репорты на свои проекты.
Также, если ищете Вики для документации и трекера проблем для управления "дорожной картой" (roadmap) проекта, Trac - хороший вариант.
Ревью кода играет ключевую роль, когда речь идет о повышении эффективности деятельности вашей организации. В частности, использование правильного инструмента поможет устранить избыточность в цикле разработки.
Мы присмотрелись к самым популярным инструментам для код-ревью, доступным в 2020 году, и вот что мы нашли:
Теперь ваша очередь: какой инструмент для ревью кода используете? Почему? Расскажите нам в комментариях!