Kodlama standartları sürekli entegrasyon sunucusu tarafından uygulanmalı mıdır?


14

Standartları / stili kodlama, statik analiz araçları (örn. PMD, StyleCop / FxCop) çalıştıran ve standartlara uyulmadığı takdirde derleme başarısız olan sürekli entegrasyon sunucusu tarafından uygulanmalı mıdır? Derlemede başarısız olmak için ne tür kurallar kullanılmamalıdır?

Yanıtlar:


11

Kodlama Standartları bir sebepten dolayı orada olmalı ... ve uyumsuzluk kontrol edilmelidir.

Ancak, tüm ihlaller olduğu gibi tüm ihlaller hata olarak değerlendirilmemelidir. Çizgiyi çizdiğiniz yer bir şirket ve bir araç kararı olmalıdır.

Örneğin, MISRA kurallarını Zorunlu ve Danışman olarak tanımlar ... Önerilerin derlemenin ilerlemesine izin vermesini öneririm.


9
Sana katılıyorum (+1) ama sadece kısmen: Her zaman kendime neden belirli derleyici veya stil polis uyarılarını açıp onları görmezden gelmesi gerektiğini soruyorum. Altı ay sonra her yapıda hala göz ardı edilen yüzlerce uyarı alırsınız. Bu tür uyarıları kapatmayı ve temiz bir yapıya sahip olmayı ya da onları görmezden gelmemeyi ve yapıları kırmamayı tercih ederim (hatalar olarak rapor edilir).
Giorgio

1
@Giorgio - Katılıyorum (çoğunlukla), ancak uyarıları inhibe etmekle çok liberal olmanın, gerçek problemleri gizlemek için bir reçete olabileceğini buldum ... bu yüzden ihmal edilen uyarılar periyodik olarak kontrol edilmelidir
Andrew

5

Tamamen duyulmamış değil ve sadece deneyerek sizin için çalışıp çalışmayacağını bileceksiniz. Bundan önce atmanız gereken bazı adımlar var.

İlk önce ekip standartlara birlikte karar vermelidir. Daha sonra geliştiricilere standartlara uyup uymadıklarını söylemek için ReSharper gibi araçlar kullanılmalıdır. Her görevde akran değerlendirmesi yapmak daha fazla yardımcı olabilir.

Bu adımlar atıldıktan sonra CI sunucusuna kodlama standart kontrolleri koymak düşünülebilir. Bununla birlikte, kodlama standartlarına uymamak için yapı molası vermenin akıllıca olup olmadığı hala düşünülmelidir. Risk, kırık yapının anlamını bozabilecek çok sayıda kırık yapıya sahip olmanızdır.

Derleme ara vermek yerine, araçları çalıştırabilir ve rapor oluşturmalarını sağlayabilirsiniz. Standart ihlalleri kodlamak artmakta gibi görünüyorsa, ekibi bir araya getirebilir ve neden olduğunu anlayabilirsiniz.


2

Standartları / stili kodlama, statik analiz araçları (örn. PMD, StyleCop / FxCop) çalıştıran ve standartlara uyulmadığı takdirde derleme başarısız olan sürekli entegrasyon sunucusu tarafından uygulanmalı mıdır?

Bu sürekli entegrasyon kontrollerinin çok, çok hızlı olması gerekir. Herhangi bir önemli gecikme, programcılarınızın sonuçları beklerken düşünce süreçlerini taahhüt edip takip edecekleri anlamına gelecektir. Daha uzun hale getirin ve bir fincan kahve alsınlar veya bir takım kahve takımının en son bungled performansı hakkında ofis arkadaşlarıyla sohbet edecekler. Bu gecikmeler yüksek oranda verimsizdir. Bazı şeyler en iyi gece yapımına veya kod incelemesine bırakılır.

Derlemede başarısız olmak için ne tür kurallar kullanılmamalıdır?

Öznel olanlar, başlangıç ​​olarak. "Kod kendi kendini belgelendirmeli veya iyi yorumlamalı" kuralını nasıl uygularsınız? "Sihirli sayı yok" kuralı? Bunlar kod incelemesine en iyi şekilde bırakılan şeylerdir.

Başka bir kategori, daha önce feragat edilen kuralların ihlalidir. Herhangi bir büyük kod tabanı göz önüne alındığında, standardı ihlal etmenin tam olarak doğru şey olduğu kaçınılmaz olarak bir kod parçası olacaktır.


2

Yazılım Kalitesini Geliştirme Planının bir parçası olarak, son zamanlarda oluşturma sürecimize entegre etmek için bir dizi kod koklamasını kodladık.

Bir PHP uygulaması olarak gerçek bir derleme yok, bu yüzden derleme gerçekten bir birim test / statik analiz / koşucu ve bunun üzerinde birkaç döngü harcayabiliriz.

Bazı kod kalitesi sorunları ve birçok sorun içeren eski kodlarımız vardı.

Taahhüt başarısız olursa, göz ardı edileceğine dayanarak, 'istenen' kodlama standardımıza karşı taahhütleri teyit etmeye başladık ve standardı karşılamayan hatalarla başarısızlık.

Bakım durma noktasına geldi, hatta eski bir bileşenin en basit düzeltmesi bile geliştiricinin büyük miktarda kaynağı yeniden biçimlendirmesini gerektirdi ve yapı daha sık kırılmadı. Söylemeye gerek yok, hataları uyarılarla değiştirdik ve şimdi yok sayılıyorlar ve 'çoğunlukla' anlamsızlar.

Bunu söyleyebilirim (zor deneyimlerden öğrendim).

Kod tabanınızın standardının, geliştiricilerin hemen kod hacimlerini yeniden biçimlendirmesini gerektirmeyecek şekilde uyguladığınız standarda yeterince yakın olduğundan emin olun. Veya .. Çabaların artmasına hazırsınız ve bekliyoruz.

Büyük bir teslimat gereksinimi olan küçük bir ekip olarak, ekibi büyük bir yeniden faktör operasyonuna geçirmeyi göze alamıyorduk. Kodlama standartlarımız artık çoğunlukla manuel inceleme ile ele alınmakta ve miras sürekli iyileştirme planının bir parçası olarak yeniden yazılmaktadır.

Uyarıların 'çoğunlukla' anlamsız olduğunu söylediğimde, bunları şimdi iyileştirmeyi göstermesi gereken kpi'leri ölçmemize izin veren istatistikleri kaydetmek için kullanıyoruz.

Kod koklamalarını tekrar uyguladığımızda, ışığı başlatacağız ve standardı zorlayana kadar bir kerede birkaç koklama getireceğiz.


Kesinlikle. Yapıyı bozmazsa, standartlara uyum sağlamak için işe yaramaz.
Andy

1

Nihai hedefinize ve stratejinize bağlı olacaktır .

CI sunucusunda tüm iyi belirtilen standartları zorlamak çok kazançlı görünebilir. Ancak, sunucuya her taahhütte yapılırsa, büyük (6'dan fazla geliştirici) geliştirme ekibi için pratik olmayabilir. İşlemden sonra sunucunuzun yanıt vermesini beklemek uzun gecikme OLMAMALIDIR. Potansiyel olarak arızaya neden olabilir.

Ancak, kod (aslında değişiklik kümesi) bağımlılık sorunlarına sahipse veya derlemiyorsa bir taahhüdü engellemek tamamen meşrudur. Ancak, kod düzeni ve bazı adlandırma kuralları nedeniyle başarısız olan kod, çok ciddi olabilir ve CI sunucusu yürütme kuralları için hayati bir kısıtlama olmayabilir.

Ancak akşam yapımı sırasında uygulanırsa yararlı bir kural olması muhtemeldir.

Ayrıca, yeniden faktoring araçları, geliştiricilerin Resharper veya JustCode kullanımı gibi standartların uygulanmasına ve öğrenilmesine yardımcı olabilir .


Katılmıyorum. Yapı sunucusu tarafından zorlanmazsa, özellikle büyük bir ekipte standart olmayacaktır. Ayrıca, hiç kimse derleme sunucusunu beklememelidir, aynı denetimler işlem yapmadan önce geliştiriciler tarafından çalıştırılabilir olmalıdır.
Andy
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.