Bir kaynak kontrol deposunda kaynak kodunu 'gözden geçirmek' için en iyi uygulama hangisidir?


12

Kaynak kontrol havuzunda gözden geçirilmiş kaynak kodunu yönetmenin en iyi yolu nedir? Kaynak kodu, check-in yapmadan önce bir inceleme sürecinden geçmeli mi veya kod işlendikten sonra kod incelemesi mi yapılmalı? İnceleme, kod depoya teslim edildikten sonra gerçekleşirse, bu nasıl izlenmelidir?

Yanıtlar:


4

Google, gördüğüm herhangi bir yerin en iyi kod inceleme uygulamalarına sahiptir. Orada tanıştığım herkes kod incelemelerinin nasıl yapılacağına dair tam bir mutabakat var. Mantra "erken ve sık sık gözden geçirin".

Graham Lee'nin önerdiğine benzeyen bir işlem kullandığınızı varsayalım. (Bu daha önce kendimi kullandığım bir süreçtir.) Sorun, yorumculardan büyük kod parçalarına bakmaları isteniyor. Bu çok daha fazla çaba ve gözden geçirenler bunu yapmak daha zordur. Ve bunu yaptıkları zaman, kapsamlı bir iş yapmalarını sağlamak daha zordur. Dahası, tasarım sorunlarını fark ettiklerinde, geliştiricilerin geri dönüp daha iyi hale getirmek için tüm çalışma kodlarını yeniden yapmasını sağlamak daha zordur. Hala bir şeyler yakalarsınız ve yine de değerlidir, ancak avantajın% 90'ından fazlasını kaçırdığınızı fark etmezsiniz.

Buna karşılık Google, kaynak kontrolüne geçmeden önce her bir taahhütte kod incelemesine sahiptir . Naif birçok insan bunun ağır bir süreç olacağını düşünüyor. Ancak pratikte bu şekilde çalışmaz. Küçük kod parçalarını tek başına incelemek çok daha kolay. Sorunlar bulunduğunda, tasarımı değiştirmek çok daha az iştir, çünkü o tasarımın etrafına henüz bir kod yazmadınız. Sonuç olarak, kapsamlı kod incelemesi yapmak çok daha kolay ve değişen sorunları düzeltmek çok daha kolay.

Google'ın yaptığı gibi kod incelemesi yapmak istiyorsanız (ki gerçekten tavsiye ederim), bunu yapmanıza yardımcı olacak bir yazılım var. Google, Subversion ile entegre araçlarını Rietveld olarak yayınladı . Go (dil), Mercurial ile kullanılmak üzere değiştirilmiş bir Rietveld sürümü ile geliştirilmiştir. Gerrit adında git kullanan insanlar için bir yeniden yazma var . Bunun için önerilen iki ticari araç da gördüm, Pota ve İnceleme Kurulu .

Kullandığım tek şey Google'ın dahili Rietveld sürümüdür ve bundan çok memnun kaldım.


4

Birden fazla ekipte kullandığım bir teknik şudur:

  • geliştiriciler kaynakları kendi şubelerine veya yerel repolarına inceleme olmadan entegre edebilir
  • geliştiriciler bagaj / master ile gözden geçirmeden entegre edilebilir
  • trunk / master'dan sürüm aday aday şubesine entegre edilebilmesi için kodun gözden geçirilmesi ve inceleme yorumlarının ele alınması gerekir.

İnceleme istemek kod yazarının sorumluluğundadır ve yalnızca incelenen kodun birleştirilmesini sağlamak için sürüm şube yöneticisinin sorumluluğundadır.

Kod incelemesini destekleyen araçlar var, ancak bunları hiç kullanmadım. Herhangi bir birleştirme için incelemeyi kimin yaptığını takip etmek repo içinde yapılabilir. Kimin neyi gözden geçirdiğini göstermek için svn özelliklerini ve taahhütlere bağlı işleri gerçekleştirdim.


2
+1: "kod aramak yazarın sorumluluğundadır" dışında. Yönetim incelemeleri tamamlanmadıkça, ilgisizliğe kayacaklardır. Bir çeşit ödül sistemi olmalı (gündelik veya gayri resmi bile), aksi takdirde yapılmayacaktır. Şube bakıcısı birine cevap verir ve kod incelemelerini kontrol etmede disiplinli olduğu için bir tür ödülü vardır. Bulmacanın bu parçası da önemlidir. İnsanların bunu yaparken neden disiplinli olacağını açıklayabilir misiniz?
S.Lott

@ S.Lott üzerinde çalıştığım ekipler, profesyonel gurur. Ayrıca, inceleme almazsanız kodunuz entegre edilmez (yukarıda açıklandığı gibi). Bu nedenle kodunuz ürüne girmez ve o gün / hafta / yineleme konusunda hiçbir iş yapmadınız. Geliştiricileriniz işlerini yapmaya motive değilse, kaynak kontrol deponuzu düzenlemekten daha kötü sorunlarınız vardır.

@Graham Lee: "Profesyonel Gurur" mu? Sorun yok (ama devam edecek çok şeyim yok.) "Geliştiriciler işlerini yapmaya motive değiller" meselesidir. Birçok yönetici, programdan önce bir sürüm talep ederek ya da ek özelliklerin eklenmesini talep ederek iyi bir süreci bozacaktır. Sürecin altüst edilmesini önlemek için hangi motive edici faktörler mevcut? Bir yöneticinin "Yarın buna ihtiyacımız var, kod incelemeleri için zamanımız yok" demesini engelleyen nedir?
S.Lott

@ S.Lott Seni bilmiyorum, ama bir menajerin işimin nasıl yapıldığını daha iyi bildiğini düşünüyor olsa da, buggy bir yığın bırakmıyorum.

@Graham Lee: Buggy kodunu yayınlamaktan kaçınmaya çalışıyorum. Benim sorum, “yönetimin sürecinizi alt üst etmesini önlemek için ekibinizi motive eden şey” dir. Bu iyi bir süreç, daha fazla bilmek istiyorum.
S.Lott

1

Kodun gözden geçirilmesi için / taahhüt edilmemiş ölçütlere göre ayrılmadım - karşılaştığım tek kriter birim testleri ve entegrasyon testlerinin yeşil olması.

İzleme gelince, favori sorun izleyicinizdeki akışı güncellemenizi tavsiye ederim. Sınav yerine:

  • Ürün sahibi -> Analist -> Geliştirici -> KG -> Sürüm mühendisi

Bir aşama daha tanıtmak isteyebilirsiniz (inceleme):

  • Ürün sahibi -> Analist -> Geliştirici -> Hakem -> KG -> Sürüm mühendisi

Bu nedenle, Uygulanan durumdaki her bilet için bir yorumcu atayabilirsiniz ve yalnızca İncelenen biletler KG'ye ilerleyecektir.


1

Kod değerlendirmeleri sadece bir deneyimim var, bu yüzden ne kadar iyi olduğunu söyleyemeyiz.

Küçük bir grup kodlayıcıyla çalışıyordum ve VS Team Foundation Studio'yu kullanıyorduk. Günde yaklaşık bir kez kod işlememiz istendi ve her bir taahhüt kodu gruptaki başka biri tarafından gözden geçirilmeden önce (umarım projede yer alan biri tarafından). Taahhüt sırasında kişinin adı da bir alana dahil edildi.


Günde sadece bir kez iş yapmak bana kırmızı bayrak gibi geliyor. Üzgünüm.
btilly

Olabilir. Ben de ilk başta biraz şaşırdım. Ancak, bu zor ve hızlı bir kural değildi ve yerel değişiklikleri istediğiniz kadar "rafa" koyabilirsiniz.
apoorv020

0

Ben bir haftada birkaç inceleme sırasında değişiklik bazında değişiklik bazında teslim her şeyi gözden geçiren bir ekip üzerinde çalıştı. Bu, kod incelemeleriyle her zaman güncel olmadığımız anlamına geliyordu, ancak elde etmek için yola çıktık.

İlk olarak, kodu gözden geçirerek ne elde etmek istediğinizi sorun. Bizim durumumuzda, salak geliştiricileri yakalamak değildi, yetersizlik varsayımı yerine yeterlilik varsayımı vardı. Ekibin sistemin diğer alanlarına genel bir bakış yapmasına izin verdi ve bazı şüpheli tasarım kararlarının taşa girmeden önce düzeltilmesine izin verdi. Şüpheli, yani, bir kedinin derisini her zaman birden fazla yol var ve herkes araç kutusunda zaten bir kedi derisi bıçağının olduğunun farkında değil.


0

Kod incelemelerini ele alma şeklimiz, proje izleme yazılımımızdaki her görevin gözden geçirilmesiydi. O zamanlar Mantis ve SVN kullanıyorduk. Proje taahhütlerimiz her iki sisteme de bağlıydı. Her taahhüt mantis'teki bir göreve bağlı olmalıydı. Görev tamamlandığında kendisine "İncelemeye Hazır" durumu atandı.

Daha sonra RFR öğeleri ya incelemeler için biraz boş zamanı olan ya da inceleme için belirli bir kişiye atanan herkes tarafından alındı. Cuma günleri, tüm RFR kalemlerinin gün bitmeden gözden geçirilmesi gerekiyordu, böylece bir sonraki haftaya kadar taşıyıcı yoktu.

Bu süreçte karşılaştığımız tek sorun, tonlarca dosyaya sahip büyük öğelerdi. Bunun üstesinden gelmek için kodlayıcı ve gözden geçiren bir araya gelecek ve kodlayıcı gözden geçiren onları anlayana kadar değişikliklerden geçecektir. Kod incelemesini birlikte yaparlar.

Yönetim, akran programlaması yapıldıysa ayrı bir kod incelemesinin gerekli olmadığını belirlediğinde bu süreç bozuldu. Geliştiriciler süreç konusunda gevşek ve küçük aptal böcekler ortaya çıkmaya başladı. Sonunda orijinal sürece geri döndük ve işler tekrar bir araya geldi.


0

Ekibimde, geçtiğimiz yıl için bir uygulama kullanıyoruz, bu çok iyi çalışıyor gibi görünüyor.

Kuruluşumuz sürüm kontrolü için Perforce kullanıyor. Performans (bir yıl önce) Raf adı verilen bir özellik içerir. Raf ile, belirli bir konu için yaptığım değişiklikleri "rafa alabilirim". Bunlar sürüm kontrol sisteminde saklanır, ancak check-in yapılmaz. Sonra ekibimdeki başka bir geliştiriciden kodu gözden geçirmesini istiyorum.

Diğer geliştirici, Performance'daki beklemedeki değişiklikleri kendi bilgisayarından görebilir ve değişiklikleri en son revizyonlarla karşılaştırabilir. Değişikliklerimi denemek istiyorsa yerel makinesine "unshelve" yapabilir. İncelemeyi tamamladığında bana haber verir. Sonra yorumun sonunda "İnceleyen Bob tarafından" ile kodumu kontrol edin.

Bu bizim için gerçekten işe yaradı. Her şeyden önce, kod incelemelerinin genel olarak son derece yararlı olduğu kanıtlanmıştır. Ek olarak, Perforce'nin raf özelliği, ekibimiz coğrafi olarak yaygın olmasına rağmen incelemeleri kontrol etmeden veya herhangi bir büyük zorluk çekmemize izin veriyor - bu çok önemli. Ve harika çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.