Sürekli Entegrasyon (CI)
Sürekli Entegrasyon (CI), değişikliklerin entegre edilmesini ve otomatik olarak test edilmesini içeren yazılım geliştirmenin önemli bir yönüdür. CI, geliştirme sürecinde sorunları erken ve sıklıkla yakalayarak yüksek kaliteli kodu korumamızı sağlar. Ultralytics adresinde, kod tabanımızın kalitesini ve bütünlüğünü sağlamak için çeşitli CI testleri kullanıyoruz.
CI Eylemleri
İşte CI faaliyetlerimizin kısa bir açıklaması:
- CI: Bu, birim testlerini, linting kontrollerini ve bazen depoya bağlı olarak daha kapsamlı testleri çalıştırmayı içeren birincil CI testimizdir.
- Docker Dağıtımı: Bu test, Docker dosyasının ve ilgili komut dosyalarının doğru çalıştığından emin olmak için Docker kullanarak projenin dağıtımını kontrol eder.
- Bozuk Bağlantılar: Bu test, kod tabanını markdown veya HTML dosyalarımızdaki herhangi bir kırık veya ölü bağlantı için tarar.
- CodeQL: CodeQL, kodumuz üzerinde semantik analiz gerçekleştiren, potansiyel güvenlik açıklarını bulmaya ve yüksek kaliteli kodu korumaya yardımcı olan GitHub'ın bir aracıdır.
- PyPI Publishing: Bu test, projenin paketlenip PyPi'de hatasız bir şekilde yayınlanıp yayınlanamayacağını kontrol eder.
CI Sonuçları
Aşağıda ana depolarımız için bu CI testlerinin durumunu gösteren tablo yer almaktadır:
Depo | CI | Docker Dağıtımı | Bozuk Bağlantılar | CodeQL | PyPI ve Docs Yayıncılığı |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
göbek | |||||
dokümanlar |
Her rozet, ilgili CI testinin son çalıştırma durumunu gösterir. main
ilgili deponun dalı. Bir test başarısız olursa, rozet "başarısız" durumunu gösterir ve geçerse "geçiyor" durumunu gösterir.
Bir testin başarısız olduğunu fark ederseniz, bunu ilgili depodaki bir GitHub sorunu aracılığıyla bildirebilirseniz çok yardımcı olur.
Unutmayın, başarılı bir CI testi her şeyin mükemmel olduğu anlamına gelmez. Dağıtımdan veya değişiklikleri birleştirmeden önce kodun her zaman manuel olarak gözden geçirilmesi önerilir.
Kod Kapsamı
Kod kapsamı, testleriniz çalıştığında kod tabanınızın yüzde kaçının çalıştırıldığını gösteren bir metriktir. Testlerinizin kodunuzu ne kadar iyi çalıştırdığına dair fikir verir ve uygulamanızın test edilmemiş kısımlarını belirlemede çok önemli olabilir. Yüksek bir kod kapsama yüzdesi genellikle daha düşük hata olasılığı ile ilişkilendirilir. Ancak, kod kapsamının hataların olmadığını garanti etmediğini anlamak önemlidir. Yalnızca kodun hangi bölümlerinin testler tarafından yürütüldüğünü gösterir.
codecov.io ile entegrasyon
Ultralytics adresinde, kod kapsamını ölçmek ve görselleştirmek için popüler bir çevrimiçi platform olan codecov.io ile depolarımızı entegre ettik. Codecov, ayrıntılı bilgiler, taahhütler arasında kapsam karşılaştırmaları ve hangi satırların kapsandığını gösteren doğrudan kodunuz üzerinde görsel kaplamalar sağlar.
Codecov ile entegre olarak, hatalara eğilimli olabilecek veya daha fazla test edilmesi gereken alanlara odaklanarak kodumuzun kalitesini korumayı ve iyileştirmeyi amaçlıyoruz.
Kapsam Sonuçları
Kod kapsamı durumuna hızlı bir şekilde göz atmak için ultralytics
python paketine bir rozet ve güneş patlaması görseli ekledik. ultralytics
kapsama sonuçları. Bu görüntüler, testlerimiz tarafından kapsanan kod yüzdesini göstermekte ve test çalışmalarımızın bir bakışta ölçülmesini sağlamaktadır. Tüm ayrıntılar için lütfen https://codecov.io/github/ultralytics/ultralytics adreslerine bakın.
Depo | Kod Kapsamı |
---|---|
ultralytics |
Aşağıdaki güneş patlaması grafiğinde, en içteki daire projenin tamamıdır, merkezden uzaklaştıkça klasörler ve son olarak tek bir dosya yer alır. Her bir dilimin boyutu ve rengi sırasıyla ifade sayısını ve kapsamı temsil etmektedir.