Перегляд коду

(Перенаправлено з Code review)

Перегляд коду (англ. code review) — систематична перевірка вихідного коду програми. Призначений не лише для виявлення помилок, але є й одним з етапів розробки програмного забезпечення для покращення загальної якості програмного коду.

Двоє розробників перевіряють код

Опис ред.

Перегляди коду часто сприяють знаходженню та виправленню загальних вразливостей, таких як вразливості форматних рядків[en], помилки некоректної послідовності виконання частин коду, витоки пам'яті та переповнення буферу, таким чином покращуючи безпеку програмного забезпечення. Онлайн-репозиторії на основі Subversion, Mercurial, Git або інших, дозволяють групам користувачів спільно робити перегляд коду. Крім того, спеціальні інструменти для спільного перегляду коду допомагають полегшити цей процес.

Автоматизоване ПЗ для перегляду коду дозволяє зменшити завдання по перегляду великих відрізків коду завдяки автоматичній перевірці вихідного коду на відомі вразливості.

При перегляді коду рекомендують перевіряти 200—400 рядків за годину[1][2][3][4]. Інспектування та перегляд більш ніж декілька сотень рядків коду за годину для критичного ПЗ (наприклад, критичного в плані безпеки вбудованого ПЗ) може бути занадто швидким для того, щоб знайти помилки[1][5]. Дані по галузі свідчать, що, при перегляді коду, можна досягти виявлення до 85 % помилок, при середньому значенні цього показника 65 %[6].

Як показали емпіричні дослідження, до 75 % дефектів, виявлених при перегляді коду, більш стосуються розширюваності програмного забезпечення, аніж його функціональності[7][8][9], що робить перегляд коду відмінним інструментом для компаній, які працюють над продуктами або системами з довгим циклом розробки[10].

Перегляд коду також дає час аби запропонувати рефакторинг[11].

Типи ред.

Перегляд коду поділяється на дві основних категорії: формальний перегляд коду та поверхневий перегляд коду[12].

Формальний перегляд коду, наприклад, такий як інспекція програми за Файганом[en], передбачає детальний і ретельний багатофазний процес з багатьма учасниками. Під час формального перегляду коду розробники ПЗ проводять серію зустрічей та переглядають код рядок за рядком, часто використовуючи для цього надруковані копії коду.

Полегшений перегляд коду, як правило, вимагає менше ресурсів, ніж формальна інспекція коду, хоча він може бути не менш ефективним. Часто полегшений перегляд коду є частиною звичайного процесу розробки:

  • Через плече — один з розробників буквально дивиться через плече автора коду, в той час як той проходить через код;
  • Email розсилка — система керування вихідним кодом автоматично розсилає написаний код на перегляд електронною поштою після того, як була зроблена відмітка про завершення;
  • Парне програмування — два автори пишуть код разом на одному комп'ютері, так як це часто трапляється в екстремальному програмуванні;
  • Перегляд коду з допомогою інструментів — автори та ті, хто переглядає код, використовують програмні інструменти, як неспеціалізовані (такі як pastebin-и або IRC), так і спеціальні інструменти, розроблені для рецензування коду.

Багато команд розробників відмовляються від традиційного формального перегляду коду на користь полегшеного, роблячи його частиною свого стандартного процесу розробки ПЗ.

Критика ред.

Історично, формальний перегляд коду вимагає значних вкладень ресурсів під час підготовки до перегляду і значного обсягу часу на сам процес.

Використання інструментів аналізу коду[en] можуть спростити цю діяльність. Зокрема, це стосується інструментів, які є в IDE, так як вони дають розробнику повідомлення щодо дотримання стандартів програмування безпосередньо під час роботи над кодом.

Див. також ред.

Посилання ред.

  1. а б Kemerer,, C.F.; Paulk, M.C. (17 квітня 2009). 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. doi:10.1109/TSE.2009.27. Архів оригіналу за 9 жовтня 2015. Процитовано 9 жовтня 2015.
  2. Code Review Metrics. Open Web Application Security Project. Open Web Application Security Project. Архів оригіналу за 9 жовтня 2015. Процитовано 9 жовтня 2015.
  3. Best Practices for Peer Code Review. Smart Bear. Smart Bear Software. Архів оригіналу за 9 жовтня 2015. Процитовано 9 жовтня 2015.
  4. Bisant, David B. (October 1989). A Two-Person Inspection Method to Improve Programming Productivity. IEEE Transactions on Software Engineering. 15 (10): 1294—1304. doi:10.1109/TSE.1989.559782. Процитовано 9 жовтня 2015.
  5. Ganssle, Jack (February 2010). A Guide to Code Inspections (PDF). The Ganssle Group. Процитовано 5 жовтня 2010.
  6. Jones, Capers (June 2008). Measuring Defect Potentials and Defect Removal Efficiency (PDF). Crosstalk, The Journal of Defense Software Engineering. Архів оригіналу (PDF) за 6 серпня 2012. Процитовано 5 жовтня 2010.
  7. Mantyla, M.V.; Lassenius, C (May–June 2009). What Types of Defects Are Really Discovered in Code Reviews? (PDF). IEEE Transactions on Software Engineering. Процитовано 21 березня 2012.
  8. Bacchelli, A; Bird, C (May 2013). Expectations, outcomes, and challenges of modern code review (PDF). Proceedings of the 35th IEEE/ACM International Conference On Software Engineering (ICSE 2013). Процитовано 2 вересня 2015.
  9. Beller, M; Bacchelli, A; Zaidman, A; Juergens, E (May 2014). Modern code reviews in open-source projects: which problems do they fix? (PDF). Proceedings of the 11th Working Conference on Mining Software Repositories (MSR 2014). Процитовано 2 вересня 2015.
  10. Siy, Harvey; Votta, Lawrence (1 грудня 2004). Does the Modern Code Inspection Have Value? (PDF). unomaha.edu. Архів оригіналу (PDF) за 28 квітня 2015. Процитовано 17 лютого 2015.
  11. https://refactoring.guru/uk
  12. Kolawa, Adam; Huizinga, Dorota (2007). Automated Defect Prevention: Best Practices in Software Management. Wiley-IEEE Computer Society Press. с. 260. ISBN 0-470-04212-5.