Обзор кода является неотъемлемой частью процессов, связанных с обеспечением высокого качества программного обеспечения. В ходе этого процесса один или несколько человек изучают и оценивают программу, основываясь преимущественно на анализе и чтении отдельных фрагментов исходного кода.
Проверка исходного кода может осуществляться как вручную, так и с использованием специальных инструментов для обзора кода. Этот процесс является неотъемлемой частью мониторинга качества программного продукта. Он направлен на поиск ошибок, обеспечение соответствия стандартам кодирования, улучшение читаемости и обеспечение возможности внесения изменений в код, а также на обнаружение дублированного кода и других проблем. Каждый компонент программного обеспечения или новая функция, разработанные сотрудниками компании-разработчика, подвергаются проверке на соответствие требованиям качества.
Создание надежного процесса обзора кода является основой для постоянного развития продукта и предотвращает выпуск небезопасного для пользователей кода. Для повышения качества кода и обеспечения проверки фрагментов кода другими членами команды, методы код-ревью должны входить в повседневную работу команд, занимающихся разработкой программного обеспечения.
В процессе кода-ревью следует учитывать следующие факторы, которые являются ключевыми для достижения эффективных результатов.
• Обзор кода должен проводиться оперативно, с получением быстрых ответов и обратной связи. Анализ кода должен производиться сразу после представления нового фрагмента кода, чтобы разработчик получил незамедлительную обратную связь.
• Анализ кода должен способствовать обучению и развитию. Поскольку процесс направлен на повышение качества кода, обзоры должны стать возможностью обмена знаниями и опытом между коллегами.
• Код-ревью должно сопровождаться тестированием. Без проведения необходимых тестов обзор может пройти мимо неисправленных ошибок и проблем с безопасностью кода.
• После обзора кода следует комментировать и поощрять хорошее кодирование. Разработчику следует сообщить, что он хорошо справляется с работой. Код-ревью служит не только для поиска ошибок, но и для поощрения программистов.
• Обзоры кода должны соответствовать стандартным практикам кодирования. Код-ревью не должен быть основан на индивидуальных предположениях, и следует придерживаться общепринятых принципов, на которые можно ссылаться и цитировать. Это необходимо для соблюдения стандартов кодирования, руководств по стилю и основных принципов языка программирования, используемых в разработке программного обеспечения.
• Результаты код-ревью иногда могут вызывать разногласия между ревьюером и разработчиком. Программист может не соглашаться с правильностью и актуальностью сделанных замечаний. Такие разногласия следует разрешать на основе общепринятых практик, изложенных в руководстве по стандартам кодирования, а также учитывая мнения экспертов с большим опытом в данной области.
Примеры комментариев к ревью кода:
• Определите цели и стандарты компании. Перед началом процесса кода-ревью необходимо определить ключевые параметры и установить ясные цели. Цели компании должны соответствовать стандартам программирования. Установив свои стандарты, компания должна гарантировать соответствие всех разрабатываемых программных продуктов требованиям.
• Создайте чек-лист для проверки кода. Чек-лист состоит из набора рекомендаций и вопросов, которыми компания следует во время проверки кода. Такой подход помогает организовать необходимые процедуры проверки качества кода перед его утверждением в кодовой базе.
• Установите метрики для оценки кода. Эффективность повышения качества кода должна быть оценена при помощи объективных метрик. Используя такие метрики, можно изучить влияние изменений и оценить результаты своих оценок. • Ограничьте количество проверяемых строк кода за один раз. Это необходимо для обеспечения одинаковой эффективности процесса обзора кода.
• Используйте инструменты автоматизации. Каждая команда или компания, занимающаяся разработкой, должна иметь специализированные инструменты для автоматизации проверки кода. С помощью таких инструментов можно сократить время проверки до нескольких минут. Они способны проанализировать всю базу кода за считанные минуты, обнаружить ошибки и дублированный код, а также предложить варианты исправлений.
Некоторые из таких инструментов включают PVS-Studio (для выявления опечаток, неиспользуемого кода и потенциальных уязвимостей), SonarQube (для проверки ошибок, соответствия стандартам кодирования и технического долга), AppRefactoring (для выявления дублированного кода и пересечений фрагментов кода, предоставляющего информацию для создания уникального кода), Codacy (для выявления ошибок в коде и проблем безопасности) и другие.
• Предоставьте положительную обратную связь на обзоре кода. Исходный код может быть результатом парного программирования, поэтому полезно давать обратную связь о положительных изменениях и рекомендациях.
В среде разработчиков широко распространено мнение о важности проверки кода на наличие дублирования и пересечений, что подтверждается практикой. Ревью кода должно включать контроль за дублированием кода, так как это позволяет легче вносить изменения в будущем и сокращает технический долг.
Одной из метрик, которую можно использовать, является процентное соотношение дублирующихся фрагментов кода к общему количеству строк кода. Для поиска и удаления дублированного кода можно использовать инструменты, например, AppRefactoring. Это сервис помогает обнаружить и удалить дублированный код, а также провести рефакторинг программного обеспечения.
Основная цель код-ревью - обеспечить общее качество и безопасность программной системы. Ревью кода коллег не должно вызывать страх или разочарование. Установите стандарты для процесса проверки кода, используйте метрики и автоматизированные инструменты, чтобы помочь в анализе и улучшении исходного кода.