Coverage
- C kursu
- İleri seviye
- Ders 70/83
- 5 dk
Kod kapsamı ölçümünü öğrenirsin.
Coverage
Kod kapsamı (coverage), testlerin kaynak kodun ne kadarını çalıştırdığını ölçer. gcov ve lcov araçları GCC ile birlikte gelir; her satır ve dal için çalıştırılma sayısını verir.
Bu derste bir coverage_counter ile dalları elle sayıyoruz; bu, gcov'un arka planda yaptığını basitleştirilmiş olarak gösterir. sign(int n) işlevi üç dal içerir: pozitif, negatif ve sıfır. Test yalnızca bir dalı çalıştırıyorsa kapsam 1/3 olur.
Dalları saymak
Bir coverage_counter global değişkeni tanımlarsın. sign işlevi her dalda sayacı artırır; hangi dalların çalıştığını görürsün. Bir testin kapsamı, çalıştırılan dalların toplam dallara oranıdır.
Örnek: int sign(int n) { if (n > 0) { coverage_counter++; return 1; } if (n < 0) { coverage_counter++; return -1; } coverage_counter++; return 0; }. sign(5) çağrısı yalnızca ilk dalı çalıştırır; sayaç 1 olur. Tam kapsam için her üç dalı da sınamalısın.
Uygulama Coverage sayaçlı sign
Global int coverage_counter = 0; tanımla. int sign(int n) yaz: n > 0 ise { coverage_counter++; return 1; }, n < 0 ise { coverage_counter++; return -1; }, yoksa coverage_counter++; return 0;. main'de int r = sign(5); ve printf("kapsam: %d\n", coverage_counter); ve printf("sign: %d\n", r);.
Başlangıç kodu
#include <stdio.h>
// Global coverage sayacı tanımla (başlangıç 0)
// sign işlevini yaz: her dalda sayacı artır
// main: sign(5) çağır ve kapsam ile sign değerini yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
int coverage_counter = 0;
int sign(int n) {
if (n > 0) { coverage_counter++; return 1; }
if (n < 0) { coverage_counter++; return -1; }
coverage_counter++;
return 0;
}
int main(void) {
int r = sign(5);
printf("kapsam: %d\n", coverage_counter);
printf("sign: %d\n", r);
return 0;
}Beklenen çıktı
kapsam: 1 sign: 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 gcov ne ölçer?
- Bellek kullanımı
- Kod kapsamı Doğru cevap
- Dosya boyutu
- CPU hızı
Açıklama: gcov her satır ve dalın çalışma sayısını verir.
2 Coverage araçlarını eşle
| Kavram | Anlamı |
|---|---|
gcov |
Satır sayacı |
lcov |
HTML rapor |
sign |
Üç dallı işlev |
coverage_counter |
El ile sayaç |
3 sign pozitif dalı
if (n > 0) { coverage_counter++; return ____; }
if (n > 0) { coverage_counter++; return 1; }
Açıklama: Pozitif sayı için sign 1 döndürür.