C++ derleme, test ve kalite araçları: CMake ve ötesi
Modern CMake ile proje kurar, GoogleTest ve Catch2 ile test yazar, sanitizer, clang-tidy ve sürekli tümleştirmeyle kaliteyi otomatik denetlersin.
Seviye 301 · 18 ders · 18 pratik lab
Dersler
Derleme sistemi
- CMake hedefleri ve modern CMake
- Bağımlılıklar: find_package ve FetchContent
- Yapılandırma ön ayarları ve derleme türleri
- Paket yöneticileri: vcpkg ve Conan
- Kısa görev: kütüphane, uygulama ve test hedefli proje
Test
- GoogleTest ile birim testleri
- Fikstürler ve parametreli testler
- gMock ile sahte nesneler
- Catch2 ile okunur testler
- Kapsam raporu: gcov ve llvm-cov
- Kısa görev: var olan bir sınıfa test takımı yaz
Kalite araçları
- Sanitizer matrisi: ASan, UBSan, TSan, MSan
- clang-tidy ve clang-format
- C++ için gdb: STL yazdırıcıları ve istisnada durmak
- Derleyici çıktısını incelemek: -S ve objdump
- Sürekli tümleştirme: derle, test et, analiz et
- Kısa görev: kalite kapısından geçen değişiklik
Bitirme
- Bitirme görevi: test edilen, analiz edilen ve paketlenen kütüphane
Pratik lablar
- Kitaplık ve uygulama hedeflerini ayırmak: Tek hedefli CMake projesini bir kitaplık ve onu kullanan uygulama hedefine böl; başlık yollarını target_include_directories ile ver.
- Derleme türleri için hazır ayarlar yazmak: Hata ayıklama, sürüm ve sanitizer derlemeleri için CMake hazır ayarlarını yaz ve üçünün de tek komutla kurulduğunu göster.
- Sızan derleme bayraklarını düzeltmek: Küresel değişkenlerle verilen bayrakların tüm hedeflere sızdığı projeyi PUBLIC, PRIVATE ve INTERFACE ayrımıyla düzelt; bağımlı hedefin temiz derlendiğini göster.
- Bağımlılığı find_package ile bağlamak: Elle verilen kitaplık yollarını find_package ve içe aktarılan hedeflerle değiştir; bulunamayınca anlaşılır hata ver.
- FetchContent bağımlılığını sabitlemek: Dal adına bağlı FetchContent tanımını belirli bir işleme ve özete sabitle; yerel yansıdan çevrimdışı kurulduğunu göster.
- Kitaplığı kurulabilir paket yapmak: Kitaplığa install ve export kurallarını ekle; sürüm dosyasıyla birlikte ayrı bir projeden find_package ile bulunup bağlandığını göster.
- İlk GoogleTest paketini yazmak: Başlığı adres parçasına çeviren işlev için boş girdi, boşluk ve Türkçe harf durumlarını kapsayan GoogleTest testleri yaz.
- Fikstür ve parametreli testle tarife sınamak: Demirsu Enerji'nin kademeli tarife hesabını ortak fikstür ve değer tablosuyla sına; sınır tüketimlerde gizli hatayı ortaya çıkar.
- Ödeme geçidini gMock ile taklit etmek: Dış ödeme geçidine bağımlı sipariş servisini arayüz üzerinden taklit et; yeniden deneme sayısını ve çağrı sırasını beklentilerle doğrula.
- Kapsanmayan dalları bulup test eklemek: gcov raporunda hiç çalışmayan hata dallarını bul ve dal kapsamını yüzde doksanın üstüne çıkaran testleri ekle.
- Catch2 bölümleriyle okunur test yazmak: Tarih ayrıştırıcısı için ortak kurulumu paylaşan SECTION bloklarıyla Catch2 testleri yaz ve üreteçle sınır değerlerini tara.
- Sanitizer matrisinde çıkan hataları kapatmak: Aynı test paketini ASan, UBSan ve TSan ile ayrı ayrı çalıştıran betiği yaz; her birinin bulduğu hatayı onar ve üç koşunun da temiz çıktığını göster.
- Biçim ve lint bulgularını sıfırlamak: Projeye clang-format ayar dosyası ekle, kodu biçimle ve seçili clang-tidy denetimlerinin bulgularını gider.
- İstisnanın çıktığı yeri gdb ile bulmak: Üst katmanda yutulan istisnanın ilk fırlatıldığı yeri catch throw ve güzel yazıcılarla bul, kap içeriğini incele ve hatayı düzelt.
- Derleyici çıktısını inceleyip kalite kapısı kurmak: Sıcak işlevin satır içine alınıp alınmadığını -S ve objdump ile doğrula; derleme, test, biçim ve çözümleme adımlarını tek betikte kapıya bağla.
- Hata ayıklama simgeleriyle çökme izini okumak: Çöken programı hata ayıklama simgeleriyle yeniden derle, gdb içinde çalıştırıp geri izden çöken satırı ve o andaki değişken değerlerini bul.
- İlk Catch2 testini yazmak: Bir yuvarlama fonksiyonu için Catch2 ile üç test durumu yaz; REQUIRE ve CHECK farkını bir başarısız örnek üzerinde göster.
- Üreteç ve eşleştiricilerle test tablosu kurmak: Ayrıştırıcı testlerini GENERATE ile veri tablosuna çevir, hata iletilerini eşleştiricilerle denetle ve fırlatılan istisna türünü doğrula; yinelenen test kodu kalmasın.
Kurs hakkında
Modern CMake ile proje kurar, GoogleTest ve Catch2 ile test yazar, sanitizer, clang-tidy ve sürekli tümleştirmeyle kaliteyi otomatik denetlersin.
Ne öğreneceksin
- Derleme sistemi
- Test
- Kalite araçları
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.