Çekme istekleri için kod kapsamı
Azure Pipelines
Kod kapsamı önemli bir kalite ölçümüdür ve test edilen projenizin kodunun yüzdesini ölçmenize yardımcı olur. Projenizin kalitesinin zaman içinde artması (veya en azından gerilemez) için, sisteme getirilen yeni kodun iyi test edilmiş olması önemlidir. Bu, geliştiricilerin çekme isteğinde bulunurken, değişikliklerin testler kapsamında olup olmadığını bilmek, değişiklikler hedef dala birleştirmeden önce test deliklerini takmaya yardımcı olur. Ayrıca, repo sahipleri büyük ve test edilmemiş değişikliklerin birleştirilmesini önlemek için ilkeler ayarlamak da istiyor olabilir.
Tam kapsam, fark kapsamı
Genellikle, kapsam bir projenin kod tabanının tamamı için ölçülür. Bu tam kapsamdır. Ancak, çekme istekleri bağlamında geliştiriciler, yapmaları gereken değişikliklere odaklanabilir ve eklemiş veya değiştirmiş olduğu belirli kod satırlarının kapsamda olup olmadığını bilmek ister. Bu, fark kapsamıdır.
Önkoşullar
Çekme isteğinin kapsam ölçümlerini almak için önce çekme isteklerini doğrulayan bir işlem hattı yapılandırın. Bu işlem hattında, kod kapsamı ölçümlerini toplamak için kullanmakta olduğu test aracını yapılandırabilirsiniz. Daha sonra kapsam sonuçları raporlama için sunucuda yayımlanması gerekir.
Kod kapsamı sonuçlarını kendi seçiminize göre toplama ve yayımlama hakkında daha fazla bilgi edinmek için Ekosistemler bölümüne bakın. Örneğin, .NET Core uygulamaları için kod kapsamı toplayın ve yayımlayın.
Not
Azure Pipelines kullanarak birçok farklı dil için kod kapsamı sonuçları toplayabilirsiniz ve yayımlayabilirsiniz, ancak bu belgede tartışılan çekme istekleri özelliği için kod kapsamı şu anda yalnızca Visual Studio kod kapsamı sonuç biçimini (dosya uzantısı .coverage) kullanan .NET ve .NET Core projeleri için kullanılabilir. Gelecekteki kilometre taşlarında diğer diller ve kapsam biçimleri için destek eklenecektir.
Kapsam durumu, ayrıntılar ve göstergeler
Kod kapsamı toplayan ve yayımlayan bir işlem hattı yapılandırdıktan sonra, çekme isteği ıldığında bir kod kapsamı durumu iletir. Varsayılan olarak, sunucu değiştirilen satırların en az %70'inin testler kapsamında olduğunu denetler. Fark kapsamı eşiği hedefi, tercihe göre değiştirilebilir. Bu konuda daha fazla bilgi edinmek için aşağıdaki ayarlar yapılandırması bölümüne bakın.

Durum denetimi, çekme isteğinde yer alan tüm kod dosyaları için fark kapsamı değerini değerlendirir. Dosyaların her biri için fark kapsamı % değerini görüntülemek için yapılandırma bölümünde belirtildiği gibi ayrıntıları açabilirsiniz. Ayrıntılar gönderileri, çekme isteğinde açıklama olarak yayınlandırılamaz.

Bir çekme isteğinin değiştirilen dosyalar görünümünde, değiştirilen satırlara kapsam göstergeleriyle ek açıklama ek olarak bu satırların kapsa olup olmadığını gösterir.

Not
Azure Pipelines tarafından destekleyen çok çeşitli sürüm denetimi sistemlerinden kod derlemenizle birlikte, bu belgede tartışılan çekme istekleri özelliği için kod kapsamı şu anda yalnızca Azure Repos.
Kapsam ayarlarını yapılandırma
Çekme istekleri için kod kapsamı deneyiminin varsayılan ayarlarını değiştirmek için, depolama alanınıza kökte azurepipelines-coverage.yml adlı bir yapılandırma YAML dosyası dahil etmek gerekir. Bu dosyada istenen değerleri ayarlayın; işlem hattı bir sonraki çalıştırmada otomatik olarak kullanılacaktır.
Değiştirilebilir ayarlar:
| Ayar | Açıklama | Varsayılan | Izin verilen değerler |
|---|---|---|---|
| durum | Çekme isteklerinde kod kapsamı durum denetiminin yayınlanıp yayınlanamay olmadığını gösterir. Bu kapatma, hiçbir kapsam denetimi ve kapsam ek açıklamaları değiştirilen dosyalar görünümünde görünmez. |
on | on, off |
| Hedef | Başarılı bir kapsam durumunun deftere açık olması için fark kapsamı hedef eşik değerine ulaşılacaktır. | %70 | İstenen % sayı |
| yorumlar | Her kod dosyası için kapsam ayrıntılarını içeren bir açıklamanın çekme isteğinde paylaşıp postalanmayacaklarını belirtir | Kapalı | on, off |
Örnek yapılandırma:
coverage:
status: # Code coverage status will be posted to pull requests based on targets defined below.
comments: on # Off by default. When on, details about coverage for each file changed will be posted as a pull request comment.
diff: # Diff coverage is code coverage only for the lines changed in a pull request.
target: 60% # Set this to a desired percentage. Default is 70 percent
Ayrıntılarla ilgili daha fazla örnek kod kapsamı YAML örnekleri reposlarında bulunabilir.
Not
Çekme isteği açıklaması ayrıntılarının açık olup olmadığı bağımsız olarak, değişen dosyalar görünümünde kapsam göstergeleri açık olur.
İpucu
YAML kapsam ayarları YAML işlem hattından farklıdır. Bunun nedeni, kapsam ayarlarının depo için geçerli olması ve kodunuzu hangi işlem hattının oluşturması olursa olsun kullanılacak olmasıdır. Bu ayrım, klasik tasarımcı tabanlı derleme işlem hatlarını kullanıyorsanız çekme istekleri için kod kapsamı durum denetimine sahip olduğunu da gösterir.
Kod kapsamı ilkesi kullanarak dalı koruma
Çekme istekleri için kod kapsamı durum denetimi yalnızca geliştiricilere yönelik bir öneridir ve düşük kod kapsamına sahip çekme isteklerinin hedef dalda birleştirilmiş olması engel değildir. Geliştiricilerin kapsam eşiğini karşılamadan değişiklikleri birleştirmesini engellemek istediğiniz bir repo kullanıyorsanız, kapsam durumu denetimi kullanarak bir dal ilkesi yapılandırmanız gerekir.
İpucu
Bir işlem hattından gönderilen kod kapsamı durumu adlandırma kuralına {name-of-your-pipeline/codecoverage} göredir.
Not
Azure Repos (isteğe bağlı ilkeler bile) dal ilkeleri, başarısız olursa çekme isteklerinin otomatik olarak tamamlanmalarını önler. Bu davranış kod kapsamı ilkesine özgü değildir.
SSS
Çekme isteklerinde kod kapsamı doğrulama için hangi kapsam araçları ve sonuç biçimleri kullanılabilir?
Çekme istekleri özelliği için kod kapsamı şu anda yalnızca Visual Studio kapsamı (.coverage) biçimlerde kullanılabilir. Bu, Visual Studio Test görevini, dotnet Core görevinin test fiilini ve test sonuçlarını yayımlama görevinin TRX seçeneğini kullanarak kod kapsamı yayımlarsanız kullanılabilir. Diğer kapsam araçları ve sonuç biçimleri için destek, gelecekteki kilometre taşlarında eklenecektir.
Çekme isteği tetiklendiğinde birden çok işlem hattı tetiklenirse kapsam işlem hatları arasında birleştirilir mi?
Bir çekme isteği tetiklendiğinde birden çok işlem hattı tetiklenirse, kod kapsamı birleştirilmez. Bu özellik şu anda çekme istekleri için kod kapsamı toplayan ve yayımlayan tek bir işlem hattı için tasarlanmıştır. Kapsam verilerini işlem hatları arasında birleştirme özelliğine ihtiyacınız varsa lütfen geliştirici topluluğuna bir özellik isteği kaydedin.
Yardım ve destek
- Sorun giderme sayfamıza bakın
- ile ilgili öneriler Stack Overflowve Geliştirici Hesabı aracılığıyla destek Community