Яка найкраща практика для "перегляду" вихідного коду у сховищі управління джерелом?


12

Що буде найкращим способом управління переглянутим вихідним кодом у сховищі управління джерелом? Чи повинен вихідний код пройти процедуру огляду перед тим, як перевіритись, або чи слід переглянути код після введення коду? Якщо огляд відбувається після реєстрації коду у сховищі, то як це слід відстежувати?

Відповіді:


4

Google має найкращі практики перегляду коду в будь-якому місці, яке я коли-небудь бачив. Усі, кого я там зустрічав, повністю узгоджуються щодо того, як робити перевірки коду. Мантра - це "огляд рано і часто".

Припустимо, ви використовуєте процес, схожий на те, що запропонував Грем Лі. (Який процес я раніше використовував сам.) Проблема полягає в тому, що рецензентів просять переглянути великі шматки коду. Це набагато більше зусиль, і рецензентам важче це зробити. А коли вони це роблять, важче змусити їх зробити ретельну роботу. Крім того, коли вони помічають проблеми з дизайном, важче змусити розробників повертатися та переробити весь свій робочий код, щоб покращити його. Ви все одно ловите речі, і вони все ще цінні, але ви не помітите, що вам не вистачає понад 90% вигоди.

На противагу цьому, Google проводить огляд коду на кожне вчинення, перш ніж він може перейти до контролю джерел. Наївно багато людей думають, що це був би важкий процес. Але на практиці це не виходить. Масово простіше переглядати невеликі шматочки коду поодиноко. Коли проблеми знайдеться, набагато менше працювати над зміною дизайну, тому що ви ще не написали купу коду навколо цього дизайну. Результат - набагато простіше зробити ретельний перегляд коду, і набагато простіше виправити зміни, що змінилися.

Якщо ви хочете зробити перегляд коду, як Google (що я дуже, дуже рекомендую), є програмне забезпечення, яке допоможе вам це зробити. Google випустив їхній інструмент, інтегрований із Subversion як Rietveld . Go (мова) розроблена з версією Rietveld, яка модифікована для використання з Mercurial. Існує переписування для людей, які використовують git на ім'я Герріт . Я також бачив два комерційні інструменти, рекомендовані для цього, Crucible та Review Board .

Єдиною, яку я використав, є внутрішня версія Google Рітвельда, і я був дуже задоволений нею.


4

Метод, який я використовував у кількох командах, такий:

  • розробники можуть інтегрувати джерело у власну філію або місцеве репо без перевірки
  • розробники можуть інтегруватися з магістраллю / майстром без огляду
  • Код повинен бути переглянуто, а коментарі до огляду - адресовані, перш ніж його можна інтегрувати з магістралі / головного до відділення кандидата у випуск

Це обов'язок автора коду вимагати перегляду, а відповідальність керівника випуску випуску - забезпечити злиття лише переглянутого коду.

Є інструменти, які підтримують перегляд коду, але я ніколи їх не використовував. Відстеження того, хто робив огляд на будь-яке злиття, можна зробити всередині репо. Я використав SVN властивості та виконувати завдання, приєднані до комітетів, щоб показати, хто що переглядав.


2
+1: за винятком "відповідальність за авторський код вимагає перегляду". Якщо керівництво не вимагає, щоб огляди не були завершені, вони будуть невідповідними. Має бути якась система винагород (навіть випадкова чи неофіційна), інакше це не вийде. Супровідник філії відповідає комусь і отримує якусь винагороду за те, що дисципліновано перевіряє на перевірку коду. Ця деталь головоломки також важлива. Не могли б ви описати, чому люди будуть дисципліновані при цьому?
S.Lott

@ S.Lott про команди, над якими я працював, професійна гордість. Крім того, якщо ви не отримаєте огляд, ваш код не інтегрується (як описано вище). Тому ваш код не потрапляє в продукт, і ви не виконували жодної роботи в той день / тиждень / ітерацію. Якщо ваші розробники не вмотивовані виконувати свою роботу, у вас є гірші проблеми, ніж організація вашого сховища управління джерелом.

@Graham Lee: "Професійний гордість"? Я знущаюся (але не потрібно багато продовжувати.) "Розробники не вмотивовані робити свою роботу" - це проблема. Багато менеджерів підривають хороший процес, вимагаючи звільнення до розкладу або вимагають вклинення додаткових функцій. Які мотивуючі фактори існують для запобігання підриву процесу? Що заважає менеджеру сказати: "Нам потрібно це завтра, ми не маємо часу на перегляд коду"?
S.Lott

@ S.Lott Я не знаю про тебе, але я не випускаю гнучку купу лайно незалежно від того, наскільки менеджер думає, що він краще знає, як робиться моя робота.

@Graham Lee: Я намагаюся уникати баггі-коду. Моє запитання - "що мотивує вашу команду уникати управління підривом вашого процесу". Це хороший процес, я хочу знати більше.
S.Lott

1

Я ніколи не розмежовував код для огляду за зафіксованими / незареєстрованими критеріями - єдиний критерій, з яким я стикався, полягає в тому, що тести блоку та тести інтеграції мають зелений колір.

Щодо відстеження, я б рекомендував оновити потік у вашому улюбленому трекері випусків. Для іспиту замість:

  • Власник продукту -> Аналітик -> Розробник -> QA -> Інженер випуску

Ви можете запровадити ще один етап (огляд):

  • Власник продукту -> Аналітик -> Розробник -> Рецензент -> QA -> Інженер випуску

Тому для кожного квитка в реалізованому стані ви можете призначити рецензента, і лише переглянуті квитки перейдуть до якості.


1

У мене є лише один досвід оглядів коду, тому я не можу сказати, наскільки це добре.

Я працював з невеликою (~ 10–15) групою кодерів, і ми використовували VS Team Foundation Studio. Нас попросили ввести код приблизно один раз на день, і перед тим, як кожен код комісії повинен був переглядатись хтось із групи (сподіваємось, хтось, хто також брав участь у проекті). Під час фіксації ім'я особи також було включено до поля.


Лише вчинення одного разу на день вражає мене червоним прапором. Вибачте.
btilly

Може бути. Я теж спочатку був дещо здивований. Однак це не було важким і швидким правилом, і ви могли "відкласти" місцеві зміни стільки, скільки хотіли.
apoorv020

0

Я працював над командою, яка перевіряла все, що було зареєстровано на основі змін, під час пари оглядів на тиждень. Це означало, що ми не завжди були в курсі оглядів коду, але ми досягли того, чого ми мали на меті.

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


0

Ми вирішили перегляд коду: переглянули кожне завдання з нашого програмного забезпечення для відстеження проектів. У той час ми використовували Mantis та SVN. Наші проектні комісії були пов'язані в обох системах. Кожен вчинок повинен був бути пов'язаний із завданням у богомолах. Після завершення завдання йому було призначено статус "Готовий до перегляду".

RFR-елементи потім підбирали будь-хто, хто мав вільний час для оглядів, або був призначений певній особі для перегляду. У п’ятницю всі пункти RFR повинні були переглянути до кінця дня, щоб не було перенесення на наступний тиждень.

Єдиними проблемами, з якими ми зіткнулися з цим процесом, були великі елементи, що мали багато файлів. Для вирішення цього питання кодер і рецензент збираються разом, і кодер буде проходити через зміни, поки рецензент не зрозумів їх. Вони разом зробили б перегляд коду.

Цей процес вийшов з ладу, коли керівництво продиктувало, що якщо проводити однорангове програмування, окремий огляд коду виявляється непотрібним. Розробники стали розслабленими щодо процесу, і маленькі дурні помилки почали впроваджувати. Врешті-решт ми повернулися до початкового процесу і все повернулося разом.


0

У моїй команді ми використовували практику останній рік або близько того, що, здається, працює дуже добре.

Наша організація використовує Perforce для контролю версій. Перфорс (станом на рік тому) включає в себе функцію під назвою «Стелаж». За допомогою стелажів я можу "відкласти" свої зміни для певного питання. Вони зберігаються в системі управління версіями, але не перевіряються. Потім я прошу іншого розробника в моїй команді переглянути код.

Інший розробник може переглянути мої очікувані зміни в Perforce з власного комп’ютера та порівняти зміни з останніми версіями. Він також може "не дотримуватися" своєї локальної машини, якщо хоче спробувати мої зміни. Коли він закінчив огляд, він дає мені знати. Потім я перевіряю свій код із "Переглянуто Боб" в кінці коментаря.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.