CI/CD for Rust: cargo-check ve clippy ile Kod Kalitesi

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Top Poster Of Month
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Rust projelerinde CI/CD (Sürekli Entegrasyon / Sürekli Teslimat) süreçleri, sadece kodun derlenip derlenmediğini kontrol etmekten çok daha fazlasıdır. Rust'ın zengin ekosistemi, kodun doğruluğunu, performansını ve stil standartlarını otomatiğe bağlayan yerleşik araçlarla gelir.
Bu sürecin iki temel direği cargo check ve clippy'dir.

1. Hızlı Geri Bildirim: cargo check

cargo build komutu kodu derler ve makine koduna (binary) dönüştürür. Ancak geliştirme sırasında sürekli binary üretmek zaman kaybıdır.
  • Nedir? cargo check, kodun sözdizimini (syntax) ve tip güvenliğini kontrol eder ancak kod üretmez.
  • Neden CI'da kullanılır? Derleyicinin en ağır kısmı olan kod üretimi (code generation) aşamasını atladığı için çok daha hızlıdır.
  • Görevi: CI hattının ilk aşamasında "Kod en azından derlenebilir mi?" sorusuna saniyeler içinde yanıt verir.

2. Akıllı Rehber: clippy

Rust derleyicisi (rustc) zaten çok titizdir, ancak Clippy bu titizliği bir üst seviyeye taşır. Clippy, kodunuzu analiz eden ve "Rust standartlarına (idiomatic Rust)" uygun olmayan kalıpları bulan bir linter aracıdır.
  • Hata Yakalama: Potansiyel mantık hatalarını (örneğin: if x == x) tespit eder.
  • Performans: Daha verimli yazılabilecek kodları önerir (örneğin: v.iter().map(|x| x).collect() yerine daha kısa yollar).
  • Okunabilirlik: Karmaşık ve kafa karıştırıcı yazımları basitleştirmeniz için sizi uyarır.

3. GitHub Actions ile Örnek CI Hattı​

Modern bir Rust projesinde .github/workflows/ci.yml dosyanız genellikle şu üç aşamayı içerir:
  1. Format Kontrolü: cargo fmt --check (Kodun girintileri, boşlukları standartlara uygun mu?)
  2. Linter (Clippy): cargo clippy -- -D warnings (Hata veya stil önerisi varsa CI'yı durdur.)
  3. Testler: cargo test (Birim ve entegrasyon testlerini çalıştır.)
YAML
Kod:
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Linter (Clippy)
        run: cargo clippy -- -D warnings
      - name: Run Tests
        run: cargo test

4. CI/CD'de Önbellekleme (Caching)​

Rust projelerinde bağımlılıkların (target/ klasörü) her seferinde sıfırdan derlenmesi CI sürelerini çok uzatabilir.
  • swatinem/rust-cache: GitHub Actions gibi platformlarda, derlenmiş kütüphaneleri önbelleğe alarak CI süresini 10 dakikadan 2 dakikaya indirebilir.

Özet Karşılaştırma​

AraçOdak NoktasıCI'daki Rolü
cargo checkDerlenebilirlikHızlı ilk kontrol.
clippyKod Kalitesi / Stil"Best practice" denetimi.
cargo testDoğrulukMantıksal hataların tespiti.
cargo fmtDüzenEstetik ve standart uyumu.
 
Geri
Üst