Обзор кода (code review) – один из самых старых и надежных методов выявления дефектов. Он основан на простой идее, используемой во множестве других сфер человеческой деятельности. Если проблему будут решать и обсуждать несколько человек, то они смогут предложить лучшее решение и избежать множества ошибок. Когда человек работает один, то он может даже не догадываться, что допускает явную ошибку или реализует что-то неоптимальным способом.
Обзор заключается в совместном внимательном чтении исходного кода и высказывании рекомендаций по его улучшению. В процессе чтения кода выявляются ошибки или участки кода, которые могут стать ошибочными в будущем. Также считается, что автор кода во время обзора не должен давать объяснений, как работает та или иная часть программы. Алгоритм работы должен быть понятен непосредственно из текста программы и комментариев. Если это условие не выполняется, то код должен быть доработан.
Как правило, обзор кода хорошо работает, так как программисты намного легче замечают ошибки в чужом коде. Также обзор кода носит обучающую составляющую. Участники обсуждения узнают для себя новые приемы программирования, узнают новые паттерны, учатся красиво оформлять код. Более подробно с методикой обзора кода можно познакомиться в замечательной книге Стива Макконнелла "Совершенный код" (Steve McConnell, "Code Complete") [1]. Также можно рекомендовать статью из Wikipedia: Code review [2].
Единственным, но существенным недостатком методологии совместного обзора кода, является стоимость её использования. Необходимо регулярно собирать нескольких программистов для обзора нового кода или повторного обзора кода после внесения рекомендаций. Это отвлекает программистов от собственных задач и требует их настроиться на новую работу. При этом программисты должны регулярно делать перерывы для отдыха. Если пытаться просматривать сразу большие фрагменты кода, то внимание быстро притупляется и польза от обзора кода быстро уменьшается. В результате, на обзор кода тратится огромное количество человеко-часов.
Одним из компромиссных решений, которое снижается стоимость анализа кода, является использование специализированных программных инструментов. Эти инструменты выполняют статический анализ кода и рекомендуют программисту обратить своё внимание на определённые фрагменты кода. Так как программы статического анализа кода не обладают искусственным интеллектом, они выполняют анализ хуже, чем это может сделать программист. Зато эти программы работают быстро, не устают и их можно использовать регулярно. Одной из таких программ, является разрабатываемый нами статический анализатор кода PVS-Studio. Особенно полезен, может оказаться режим инкрементального анализа, который запускается автоматически после компиляции изменённых файлов. В результате многие ошибки и опечатки могут быть выявлены на самом раннем этапе.
0