Kod Kapsamı Sorunlarını Giderme
Visual Studio'daki kod kapsamı analiz aracı yerel ve yönetilen (.ddl veya .exe dosyaları) için verileri toplar.Ancak bazı durumlarda Kod Kapsamı Sonuçlar penceresi "Boş üretilen sonuçlar: ..." benzeri bir hata gösterir. Bunun olmasının çeşitli sebepleri vardır.Bu konu bu sorunların giderilmesine yardımcı olmak amacıyla hazırlanmıştır.
Görmeniz gereken
Eğer Test menüsünden Kod Kapsamı Analizi komutunu seçmişseniz ve eğer yapım ve testler başarılıysa, Kod Kapsamı penceresinde sonuç listesini görmelisiniz.Ayrıntıları görmek için öğeleri genişletmeniz gerekebilir.
Daha fazla bilgi için bkz. Kod kapsamı belirlemek ne kadar kod kullanılarak test edilmiştir.
Hiçbir sonuç görmemenin olası sebepleri
Hiçbir sınama yürütülemedi
Çözümleme
Çıktı penceresini kontrol edin.Aşağı açılan listede Çıktıyı göster içerisinde, Testler'i seçin.Herhangi bir uyarı veya hatanın kayıtlanmadığına bakın.Açıklama
Kod kapsamı analizleri testler çalışırken tamamlanır.Testler çalıştırıldığında sadece belleğe yüklenen derlemeleri içerir.Eğer testlerin hiçbiri çalıştırılmazsa kod kapsamı raporunda hiçbirşey olmaz.Çözüm
Test Gezgini'nden testlerin başarıyla sonuçlandığını doğrulamak için Çalışan Bütün 'ü seçin.Kod Kapsamı Analizini kullanmadan önce bütün hataları düzeltin.
.pdb (simge) dosyaları kullanılamaz
Çözümleme
Derleme hedef klasörünü (genellikle bin\debug) açın ve her derleme için .pdb dosyasının .dll veya .exe dosyası ile aynı dizinde olduğunu doğrulayın.Açıklama
Kod kapsamı motorunun test sırasında her derleme için ilişkili .pdb dosyasının erişilebilir olmasına ihtiyacı vardır.Eğer belirli bir derleme için .pdb dosyası yoksa, o dosya analiz edilmez..pdb dosyası .dll veya .exe dosyasıyla birlikte aynı derleme sırasında oluşturulmalıdır.
Çözüm
Yapım ayarlarının .pdb dosyasını oluşturduğundan emin olun.Proje oluşturulduğunda .pdb dosyaları güncellenmemişse, proje özellikleri sayfasını açıp Yapım sayfasından Gelişmiş ve Hata ayıklama bilgisi 'ni denetleyin.Eğer .pdb ve .dll veya .exe dosyaları farklı yerlerdeyse, .pdb dosyasını aynı dizine kopyalayın.Kod kapsamı motorunu .pdb dosyalarını başka bir konumda aramak için yapılandırmak mümkündür.Daha fazla bilgi için bkz. Kod Kapsamı Çözümlemeyi Özelleştirme.
Araçlı ya da optimize edilmiş ikili kullanma
Çözümleme
İkilinin Profil Destekli İyileştirme gibi gelişmiş bir iyileştirmeden geçmiş olduğu veya csinstr.exe veya vsperfmon.exe gibi profil oluşturma aracı tarafından oluşturulduğunu belirleyin.Açıklama
Eğer bir derleme zaten başka bir profil oluşturma aracıyla araçlanmış veya iyileştirilmişse, derleme kod kapsamı analizinden atlanmıştır.Kod kapsamı analizi bu tür derlemelerde gerçekleştirilmez.
Çözüm
İyileştirmeyi kapatın ve yeni bir yapım kullanın.
Kod yönetilen (.NET) veya yerel (C++) kodu değilse
Çözümleme
Yönetilen veya C++ kodunda bazı testler çalıştığından emin olun.Açıklama
Visual Studio'daki kod kapsama analizi sadece yönetilen ve yerel (C++) kodları için kullanılabilir.Eğer üçüncü parti araçlar kullanıyorsanız, kodunuzun bazı veya tamamı farklı bir platformda çalışabilir.Çözüm
Hiçbiri kullanılamaz.
NGen tarafından yüklenen derleme
Çözümleme
Derlemenin yerel bir görüntü önbelleğinden yüklenmediğinden emin olun.Açıklama
Performansla ilgili nedenlerden dolayı, yerel görüntü derlemeleri analiz edilmez.Daha fazla bilgi için bkz. Ngen.exe (özgün Görüntü Oluşturucu).Çözüm
Derlemenin MSIL sürümünü kullanın.NGen ile işlemeyin.
Hatalı sözdizimi ile özelleştirilmiş .runsettings dosyası
Çözümleme
Özelleştirilmiş bir .runsettings dosyası kullanıyorsanız, sözdizimi hatası içerebilir.Kod kapsamı içindeki sonuçlardır.Kod kapsamı penceresi test sonunda açılmaz ya da eski sonuçları gösterir.
Açıklama
Birim testlerini kod kapsam seçeneklerini yapılandırmak için özelleştirilmiş .runsettings dosyasıyla çalıştırabilirsiniz.Bu seçenek size dosyaları eklemeyi veya çıkarmayı sağlar.Daha fazla bilgi için bkz. Kod Kapsamı Çözümlemeyi Özelleştirme.Çözüm
Olası iki hata türü şunlardır:
XML hatası
.runsettings dosyasını Visual Studio XML düzenleyicisinde açın.Hata göstergelerine bakın.
Düzenli ifade hatası
Dosyadaki her dize bir düzenli ifadedir.Herbirini hatalar için gözden geçirin ve bu belirtilen için bakın:
Eşleşmeyen parantezler (...) ya da atlatılamayan parantez \ (...\).Arama dizisinde parantezleri eşleştirmek istiyorsanız, atlatmak gerekir.Örneğin, işlevi eşleştirmek için bunu kullanın: .*MyFunction\(double\)
İfadenin başına yıldız veya artı koyun.Herhangi bir dizenin karakterlerini eşleştirmek için, noktadan sonra yıldız kullanın: .*
Yanlış istisnalarla özelleştirilmiş .runsettings dosyası
Çözümleme
Eğer özelleştirilmiş bir .runsettings dosyası kullanıyorsanız, derlemenizi içerdiğinden emin olun.Açıklama
Birim testlerini kod kapsam seçeneklerini yapılandırmak için özelleştirilmiş .runsettings dosyasıyla çalıştırabilirsiniz.Bu seçenek size dosyaları eklemeyi veya çıkarmayı sağlar.Daha fazla bilgi için bkz. Kod Kapsamı Çözümlemeyi Özelleştirme.Çözüm
.runsettings dosyasından bütün Include düğümlerini silin ve sonra bütün Exclude düğümlerini silin..Eğer bu problemi çözdüyse, bunları aşamalar halinde yerleştirin.DataCollectors düğümünün Kod Kapsamını belirttiğinden emin olun.Kod Kapsamı Çözümlemeyi Özelleştirme 'deki örnek ile karşılaştırın.
Bazı kodlar herzaman gösterildiği gibi kapsanmaz
Araçlandırılmadan önce yerel DLL'lerdeki kodun başlatılması
Çözümleme
Statik olarak bağlı yerel kodda, başlatma işlevinin bir parçası olarak DllMain ve onu çağıran kod bazen çalıştırılsa bile kapsanmamış olarak gösterilir.Açıklama
Kod kapsamı aracı uygulama başlamadan önce araçlamanın derlemeye eklenmesiyle çalışır.Bu süreden önce yüklenen herhangi bir derleme, DllMain içerisindeki başlatma kodunu uygulama çalışmadan önce derleme yüklenir yüklenmez yükleyip çalıştırır.Kod kapsanmayacak gibi görünür.Genellikle, bu statik olarak yüklenen derlemeler için geçerlidir.
Çözüm
Yok.
Ayrıca bkz.
Diğer Kaynaklar
Kod kapsamı belirlemek ne kadar kod kullanılarak test edilmiştir