Просмотр кода

Pause

Просмотр кода (англ. code review, иногда также англ. peer review — «экспертная проверка») — это процесс обеспечения качества программного обеспечения, при котором один или несколько участников анализируют исходный код компьютерной программы, как после реализации, так и в ходе разработки. Участники проверки, не являющиеся автором кода, называются «рецензентами». По крайней мере один рецензент не должен быть автором проверяемого кода[1].

Просмотр кода отличается от других методов обеспечения качества, таких как статический анализ кода, самостоятельная проверка, тестирование программного обеспечения и парное программирование. Статический анализ основывается главным образом на автоматических инструментах, самостоятельная проверка выполняется только автором, тестирование требует исполнения кода, а парное программирование проходит непрерывно в ходе разработки, а не как отдельный этап[1].

К 2026 году до 75 % нового кода генерируется с помощью искусственного интеллекта[2]. Однако в процессе просмотра кода ИИ выступает исключительно в роли помощника, выполняющего первичную проверку. Автором кода и рецензентом, принимающим окончательное решение, остаётся человек, несущий полную ответственность за качество и безопасность[3][4]. В отличие от классического статического анализа, который опирается на строгие детерминированные правила и оценивает код изолированно, инструменты ИИ-ревью способны понимать архитектурный контекст, бизнес-логику и намерения разработчика[5][6].

undefined

Цели

Хотя непосредственное выявление проблем с качеством часто является основной целью[7], просмотр кода обычно проводится для достижения комплекса целей:[8]

  • Повышение качества кода — улучшение внутреннего качества и сопровождаемости благодаря лучшей читаемости, последовательности и понятности для других разработчиков.
  • Обнаружение дефектов — обеспечение качества по внешним критериям, включая корректность, а также выявление проблем с производительностью, уязвимостей и внедрённого вредоносного кода.
  • Обучение и передача знаний — распространение информации о кодовой базе, способах решения задач и ожиданий по качеству между рецензентами и автором. При использовании ИИ-генерации фокус смещается с изучения синтаксиса на верификацию логики, намерений и контроль галлюцинаций[9][10].
  • Повышение чувства коллективной ответственности — формирование ощущения общей собственности на код и сплочённости команды.
  • Поиск лучших решений — генерация идей для новых и более эффективных решений не только для текущего кода, но и в целом.
  • Соответствие стандартам QA и ISO/IEC — выполнение требований по обязательному просмотру кода в ряде сфер, включая системы управления воздушным движением и другие критически важные системы.

С развитием автоматизированных инструментов рутинные проверки (такие как стиль и синтаксис) всё чаще делегируются ИИ, в то время как человек фокусируется на архитектурном анализе и проверке бизнес-логики[11][12].

Виды просмотра кода

Существует несколько вариантов процесса просмотра кода, дополнительные типы описаны в стандарте IEEE 1028[13], который в 2019 году был переведён в статус неактивного без создания стандарта-преемника[14].

  • Управленческие обзоры
  • Технические обзоры
  • Инспекции
  • Пошаговый разбор (walk-through)
  • Аудиты

Метод «Stacked pull requests» (разбиение крупных изменений на слои) не выделяется в отдельный вид ревью, а рассматривается как способ организации рабочего процесса. Этот подход помогает справиться с высокой скоростью генерации кода инструментами искусственного интеллекта за счёт декомпозиции задач на упорядоченную серию небольших пулл-реквестов[15][16][17].

Инспекция (формальная)

Первым подробно изученным и описанным видом просмотра кода стал процесс под названием «инспекция», предложенный Майклом Фейганом[18]. Фейгановская инспекция — это формализованный процесс, включающий тщательное и поэтапное обсуждение с участием нескольких специалистов. При формальном просмотре кода разработчики собираются на серию встреч для построчного анализа, часто используя бумажные копии исходников. Исследования показывают, что такие инспекции крайне детальны и эффективны для выявления дефектов[18].

Регулярная проверка изменений (пошаговый разбор, walk-through)

На практике команды разработки чаще используют более лёгкие процессы, при которых обзор касается изменений, связанных с тикетом, пользовательской историей, коммитом или иной единицей работы[19][7]. Часто устанавливаются правила, интегрирующие просмотр в рабочий процесс (например, обязательная проверка всех тикетов, обычно через механизм pull request), исключая отдельное планирование для каждой задачи. Такой процесс называют регулярным просмотров кода на основе изменений[1]. Существует множество вариаций этого подхода.

По данным исследования 2017 года, 90 % команд, применяющих просмотр кода, используют именно процесс, основанный на изменениях, а 60 % из них — регулярный просмотр на основе изменений[7]. Крупные ИТ-компании, применяющие этот подход, включают Microsoft[20], Google[21], и Facebook.

Согласно статистике за 2025—2026 годы, автоматизированное ИИ-ревью используют 44—47 % разработчиков, оно внедрено в 1,3 млн репозиториев[22].

Эффективность и результативность

Согласно исследованиям Каперса Джонса, основанным на анализе более 12 000 проектов, формальные инспекции выявляют 60–65 % скрытых дефектов, неформальные проверки — менее 50 %, а тестирование — около 30 %[23].

Однако данные исследования, включённые в книгу Best Kept Secrets of Peer Code Review[23], показывают, что «лёгкие» проверки находят столько же ошибок, сколько и формальные, но при этом быстрее и дешевле[24].

Исследования показывают, что до 75 % замечаний в ходе просмотра кода относятся не к функциональности, а к развитию и поддерживаемости программного обеспечения[25], что делает просмотр кода особенно полезным для компаний с длительным жизненным циклом продуктов[26]. Менее 15 % дискуссий в процессе просмотра кода напрямую связаны с ошибками[27].

Для паттерн-ориентированных задач, таких как проверка безопасности, стиля кода и поиск известных багов, эффективность искусственного интеллекта высока: 80–90 % выявленных проблем являются подлинными, при этом доля ложных срабатываний составляет менее 20 %[28]. Однако высокая скорость генерации кода с помощью ИИ привела к появлению «узкого места» в процессе разработки, увеличив общее время цикла ревью до 16–29 часов[29].

Рекомендации по проведению просмотра кода

Результативность просмотра кода зависит от скорости его проведения: наиболее эффективной считается скорость 200–400 строк кода в час[30].

Анализ и проверка большего объёма кода в час (особенно при критических приложениях) приводят к высокому риску пропуска ошибок[30][31].

В связи с распространением генерации кода с помощью искусственного интеллекта объёмы кода значительно возросли, что привело к появлению новых факторов риска, таких как «усталость от ревью» и излишнее доверие к автоматизации. Для контроля качества в таких условиях рекомендуется отслеживать метрики процесса: скорость одобрения изменений, плотность комментариев и долю пропущенных багов[32].[33]

Инструменты автоматизации и ИИ

Инструменты статического анализа кода помогают рецензентам автоматически выявлять известные уязвимости и паттерны ошибок, особенно при работе с большими объёмами кода[34]. Согласно исследованию VDC Research (2012), 17,6 % инженеров, занятых разработкой встроенного ПО, уже используют автоматизированные инструменты для просмотра кода, а 23,7 % планируют их внедрение в течение двух лет[35]. К 2026 году статический анализ кода эволюционировал в гибридные системы, объединяющие традиционные методы (SAST) и большие языковые модели (LLM). Это позволило снизить долю ложных срабатываний до уровня менее 20 % и повысить точность обнаружения уязвимостей до 89,5 %[36][37]. Современный автоматизированный просмотр кода на базе искусственного интеллекта выступает в роли «семантического слоя интеллекта», который понимает контекст репозитория, архитектуру проекта и намерения разработчика. Среди таких инструментов выделяются GitHub Copilot, Macroscope и Qodo. Они интегрируются непосредственно в среды разработки (IDE), обеспечивая проверку кода в реальном времени. Данные решения также включают функции глубокого анализа структуры кода, такие как отслеживание кросс-файловых зависимостей и автоматическое извлечение архитектурных правил[38][39][40].

Роль человека и доверие к ИИ

Несмотря на то, что инструменты искусственного интеллекта успешно справляются с написанием базового кода, они не имеют глобального контекста продукта[41][42]. В связи с этим при проверке кода человек должен фокусироваться на следующих зонах ответственности:

  • Бизнес-логика: ИИ изолирован от доменных правил, поэтому разработчик должен проверять соответствие кода критериям приёмки и бизнес-ограничениям[43].
  • Архитектурные границы: ИИ оценивает код локально и не знает долгосрочных целей системы, поэтому человеку необходимо контролировать правильность выбранных абстракций[44][45].
  • Скрытые зависимости: анализ ИИ часто ограничен рамками конкретного изменения, поэтому разработчик должен оценивать влияние правок на другие сервисы и интеграции[43][42].
  • Граничные случаи: модели обычно обучаются на типичных примерах, оставляя человеку задачу обработки нестандартных данных и непредвиденных действий пользователя[46].

Широкое использование ИИ-ассистентов может приводить к проблеме «предвзятости автоматизации» (automation bias) — ситуации, когда разработчики слепо одобряют предложенные правки[47]. Для борьбы с этим явлением применяются следующие методы:

  • Встроенное трение (friction): интерфейсы проектируются так, чтобы требовать от пользователя осмысленного подтверждения логики ИИ перед принятием решения[47].
  • Калибровка уверенности: выводы ИИ с низкой степенью уверенности требуют более глубокого вовлечения и обязательного ручного подтверждения[47].
  • Выборочный аудит: внедрение периодических задач без использования ИИ для поддержания квалификации специалистов и сохранения их независимого суждения[47].

Примечания

  1. ↑ 1 2 3 Baum, Тобиас. A Faceted Classification Scheme for Change-Based Industrial Code Review Processes // 2016 IEEE International Conference on Software Quality, Reliability and Security (QRS) / Тобиас Baum, Ольга Лискин, Кай Никлас … [и др.]. — 2016. — P. 74–85. — ISBN 978-1-5090-4127-5. — doi:10.1109/QRS.2016.19.
  2. ↑ Google says 75% of new code will be AI-generated by 2026. Business Insider (18 апреля 2024). Дата обращения: 27 августа 2026.
  3. ↑ Establishing Code Review Standards for AI-Generated Code. Metacto (20 мая 2024). Дата обращения: 27 августа 2026.
  4. ↑ Code Review in the Age of AI. Substack (8 мая 2024). Дата обращения: 27 августа 2026.
  5. ↑ AI Code Review Tools vs. Static Analysis: An Enterprise Guide. AugmentCode (15 июля 2024). Дата обращения: 27 августа 2026.
  6. ↑ Top 11 AI Code Review Tools. Start Early AI (10 июня 2024). Дата обращения: 27 августа 2026.
  7. ↑ 1 2 3 Baum, Тобиас. The Choice of Code Review Process: A Survey on the State of the Practice // Product-Focused Software Process Improvement / Тобиас Baum, Хендрик Leßmann, Курт Шнайдер. — 2017. — Vol. 10611. — P. 111–127. — ISBN 978-3-319-69925-7. — doi:10.1007/978-3-319-69926-4_9.
  8. ↑ Baum, Тобиас. Factors Influencing Code Review Processes in Industry // Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering - FSE 2016 / Тобиас Baum, Ольга Лискин, Кай Никлас … [и др.]. — 2016. — P. 85–96. — ISBN 9781450342186. — doi:10.1145/2950290.2950323.
  9. ↑ AI Code Review and Cognitive Debt. The New Stack. Дата обращения: 27 августа 2026.
  10. ↑ AI Coding Impact 2026. Trigi Digital. Дата обращения: 27 августа 2026.
  11. ↑ Code Review & AI: Three Paths for Engineering Leads in 2026. PowerCode Group. Дата обращения: 27 августа 2026.
  12. ↑ The State of AI Code Review in 2026: Trends, Tools, and What's Next. dev.to. Дата обращения: 27 августа 2026.
  13. ↑ IEEE Standard for Software Reviews and Audits. — IEEE STD 1028-2008, август 2008. — P. 1–53. — ISBN 978-0-7381-5768-9. — doi:10.1109/ieeestd.2008.4601584.
  14. ↑ IEEE Standard for Software Reviews and Audits (Inactive-Reserved Standard). IEEE Standards Association (7 ноября 2019). Дата обращения: 27 августа 2026.
  15. ↑ GitHub Stacked Pull Requests Public Preview (July 2026). ExplainX.ai. Дата обращения: 27 августа 2026.
  16. ↑ Stacked Pull Requests: The Future of Code Review? GitHub Community. Дата обращения: 27 августа 2026.
  17. ↑ GitHub Brings Stacked Pull Requests Out of the Shadows. DevOps.com. Дата обращения: 27 августа 2026.
  18. ↑ 1 2 Фейган, Майкл (1976). “Design and code inspections to reduce errors in program development”. IBM Systems Journal. 15 (3): 182—211. DOI:10.1147/sj.153.0182.
  19. ↑ Rigby, Питер. Convergent contemporary software peer review practices // Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering / Питер Rigby, Кристиан Bird. — 2013. — P. 202–212. — ISBN 9781450322379. — doi:10.1145/2491411.2491444.
  20. ↑ MacLeod, Лора; Грилер, Микаэла; Стори, Маргарет-Анн; Bird, Кристиан; Червонка, Яцек (2017). “Code Reviewing in the Trenches: Challenges and Best Practices” (PDF). IEEE Software. 35 (4): 34. DOI:10.1109/MS.2017.265100500. S2CID 49651487. Дата обращения 2026-08-27.
  21. ↑ Sadowski, Кэйтлин. Modern code review: A case study at google // Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice / Кэйтлин Sadowski, Эмма Söderberg, Люк Church … [и др.]. — 2018. — P. 181–190. — ISBN 9781450356596. — doi:10.1145/3183519.3183525.
  22. ↑ The State of AI Code Review in 2026: Trends, Tools, and What's Next. dev.to. Дата обращения: 27 августа 2026.
  23. ↑ 1 2 Джонс, Каперс Measuring Defect Potentials and Defect Removal Efficiency. Crosstalk, The Journal of Defense Software Engineering (июнь 2008). Дата обращения: 27 августа 2026. Архивировано 6 августа 2012 года.
  24. ↑ Джейсон Коэн. Best Kept Secrets of Peer Code Review (Modern Approach. Practical Advice.). — Smart Bear Inc., 2006. — ISBN 978-1-59916-067-2.
  25. ↑ Червонка, Яцек. Code Reviews do Not Find Bugs. How the Current Code Review Best Practice Slows Us Down // 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering / Яцек Червонка, Микаэла Грилер, Джек Тилфорд. — 2015. — Vol. 2. — P. 27–28. — ISBN 978-1-4799-1934-5. — doi:10.1109/ICSE.2015.131.
  26. ↑ Siy, Harvey; Votta, Lawrence Does the Modern Code Inspection Have Value? unomaha.edu (1 декабря 2004). Дата обращения: 17 февраля 2015. Архивировано 28 апреля 2015 года.
  27. ↑ Bosu, Амиангшу; Грилер, Микаэла; Bird, Крис Characteristics of Useful Code Reviews: An Empirical Study at Microsoft. 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories (май 2015). Дата обращения: 27 августа 2026. Архивировано 26 сентября 2025 года.
  28. ↑ AI Code Review Tools: The Good, The Bad, and The Ugly. madewithlove.com. Дата обращения: 27 августа 2026.
  29. ↑ PR Cycle Time in the AI Era: The New Bottleneck. larridin.com. Дата обращения: 27 августа 2026.
  30. ↑ 1 2 Kemerer, C.F.; Paulk, M.C. (2009-04-17). “The Impact of Design and Code Reviews on Software Quality: An Empirical Study Based on PSP Data”. IEEE Transactions on Software Engineering. 35 (4): 534—550. Bibcode:2009ITSEn..35..534K. DOI:10.1109/TSE.2009.27. HDL:11059/14085. S2CID 14432409.
  31. ↑ Ganssle, Jack A Guide to Code Inspections. The Ganssle Group (февраль 2010). Дата обращения: 27 августа 2026. Архивировано 11 марта 2003 года.
  32. ↑ AI Review Fatigue and Automation Complacency in Code Review. Atomic Robot Blog. Дата обращения: 27 августа 2026.
  33. ↑ Как ИИ-генерация кода меняет процесс код-ревью и какие метрики отслеживать. BrainTools. Дата обращения: 27 августа 2026.
  34. ↑ Balachandran, Vipin. Reducing human effort and improving quality in peer code reviews using automatic static analysis and reviewer recommendation // 2013 35th International Conference on Software Engineering (ICSE). — 2013. — P. 931–940. — ISBN 978-1-4673-3076-3. — doi:10.1109/ICSE.2013.6606642.
  35. ↑ VDC Research Automated Defect Prevention for Embedded Software Quality. VDC Research (1 февраля 2012). Дата обращения: 27 августа 2026. Архивировано 7 апреля 2012 года.
  36. ↑ AI-Powered SAST Tools: False Positives and Precision Metrics. Arnica. Дата обращения: 27 августа 2026.
  37. ↑ AI Code Review Security: False Positives and Hybrid Systems. Wispaper. Дата обращения: 27 августа 2026.
  38. ↑ The AI Code Review Stack: A 6-Layer Strategy. Cubic. Дата обращения: 27 августа 2026.
  39. ↑ Best AI Code Review Tools 2026. Macroscope. Дата обращения: 27 августа 2026.
  40. ↑ Copilot Code Review Now in JetBrains IDEs and Visual Studio. GitHub Blog. Дата обращения: 27 августа 2026.
  41. ↑ AI Code Review Guide. Super-Productivity. Дата обращения: 27 августа 2026.
  42. ↑ 1 2 AI Code Review: The Good, The Bad, and The Ugly. Improving. Дата обращения: 27 августа 2026.
  43. ↑ 1 2 Как проверять код, сгенерированный ИИ. QATools.ru. Дата обращения: 27 августа 2026.
  44. ↑ AI Broke Your Code Review. Here's How to Fix It. Bryan Finster's Substack. Дата обращения: 27 августа 2026.
  45. ↑ AI Code Review Tools: Best Practices. QWE.edu.pl. Дата обращения: 27 августа 2026.
  46. ↑ Common Bugs in AI Generated Code. TripleMinds. Дата обращения: 27 августа 2026.
  47. ↑ 1 2 3 4 Designing for Doubt: How to Prevent Automation Complacency in AI Workflows. UX Matters. Дата обращения: 27 августа 2026.

Ссылки

Категории

Pause