Проверка кода (иногда называемая экспертной проверкой ) - это действие по обеспечению качества программного обеспечения, в котором один или несколько человек проверяют программу в основном путем просмотра и чтения частей ее исходного кода, и они делают это после реализации или в качестве прерывания реализации. По крайней мере, одно из лиц не должно быть автором кода. Лица, выполняющие проверку, за исключением автора, называются «рецензентами».
Хотя непосредственное обнаружение проблем качества часто является основной целью, рецензирование кода обычно выполняется для достижения нескольких целей:
Вышеупомянутое определение проверки кода ограничивает в сравнении с соседними, но отдельными методами обеспечения качества программного обеспечения : в статическом анализе кода основная проверка выполняется автоматизированной программой, в самопроверках только автор проверяет кода, в тестировании выполнение кода является неотъемлемой частью, а парное программирование выполняется непрерывно во время реализации, а не как отдельный шаг.
Существует множество вариантов процессов проверки кода, некоторые из которых будут подробно описано ниже.
Исторически первый процесс проверки кода, который был изучен и подробно описан, его изобретатель Майкл Фаган назвал «инспекцией». Эта проверка Фэгана представляет собой формальный процесс, который включает в себя тщательное и детальное выполнение с несколькими участниками и несколькими этапами. Формальная проверка кода - это традиционный метод проверки, при котором разработчики программного обеспечения посещают серию встреч и просматривают код построчно, обычно с использованием печатных копий материала. Формальные проверки являются чрезвычайно тщательными и доказали свою эффективность при обнаружении дефектов в проверяемом коде.
В последние годы многие рабочие группы внедрили более легкие тип обзора кода. Его основная характеристика заключается в том, что объем каждого обзора основан на изменениях в кодовой базе, выполненных в заявке, пользовательской истории, фиксации или какой-либо другой единице работы. Кроме того, существуют правила или соглашения, которые включают задачу проверки в процесс разработки (например, «каждая заявка должна быть проверена») вместо явного планирования каждой проверки. Такой процесс проверки называется «регулярной проверкой кода на основе изменений». Есть много вариантов этого основного процесса. Опрос 240 команд разработчиков в 2017 году показал, что 90% команд используют процесс проверки, основанный на изменениях (если они вообще используют проверки), а 60% используют регулярную проверку кода на основе изменений. Кроме того, большинство крупных программных корпораций, таких как Microsoft, Google и Facebook, следуют процессу проверки кода на основе изменений.
Текущий анализ более 12 000 проектов разработки программного обеспечения, проведенный Каперсом Джонсом, показал, что уровень обнаружения скрытых дефектов при формальной проверке находится в диапазоне 60-65%. Для неформального осмотра цифра меньше 50%. Уровень обнаружения скрытых дефектов для большинства форм тестирования составляет около 30%. Пример анализа кода, опубликованный в книге Best Kept Secrets of Peer Code Review, показал, что упрощенные обзоры могут выявить столько же ошибок, сколько и формальные обзоры, но были быстрее и более рентабельны в отличие от исследования, проведенного Каперсом Джонсом
Также были изучены типы дефектов, обнаруженных при проверке кода. Эмпирические исследования показали, что до 75% дефектов проверки кода влияют на эволюционируемость / ремонтопригодность программного обеспечения, а не на функциональность, что делает обзоры кода отличным инструментом для компаний-разработчиков программного обеспечения с длительными жизненными циклами продуктов или систем. 27>Было обнаружено, что эффективность проверки кода зависит от скорости проверки. Скорость проверки кода должна составлять от 200 до 400 строк кода в час. Проверка и анализ более нескольких сотен строк кода в час на предмет наличия критически важного программного обеспечения (например, критически важного для безопасности встроенного программного обеспечения ) может оказаться слишком быстрым для поиска ошибок.
Статический Программное обеспечение для анализа кода уменьшает задачу проверки больших фрагментов кода на разработчике, систематически проверяя исходный код на наличие известных уязвимостей и типов дефектов. Исследование, проведенное VDC Research в 2012 году, показывает, что 17,6% опрошенных инженеров по встроенному ПО в настоящее время используют автоматизированные инструменты для поддержки экспертной проверки кода, а 23,7% ожидают их использования в течение 2 лет.