Rust'ın derleyicisi, çoğu geliştiricinin karşılaşacağı en katı kod inceleme aracıdır. Sahiplik sistemi, ödünç alma denetleyicisi ve ömür boyu uygulama özelliği, C ve C++ kod tabanlarını rahatsız eden birçok hata kategorisini ortadan kaldırır. Ancak bellek hatalarını önleyen bir derleyici, kapsamlı bir kalite sistemiyle aynı şey değildir. Mantıksal hatalar, güvensiz bağımlılık zincirleri, güvensiz blok kullanımı, performans karşıtı kalıplar ve stil kaymaları yine de varlığını sürdürür. rustcBüyük ölçekte güvenilir Rust derlemeleri geliştiren ekipler, derleyiciyi kalite yüzeyinin farklı bölümlerini kapsayan katmanlı bir statik analiz araçları setiyle birleştirir.
Yanlış kombinasyonu seçmek, sürekli entegrasyon (CI) zamanını boşa harcar ve geliştiricilerin görmezden gelmeyi öğrendiği gereksiz gürültü üretir. Doğru olanı seçmek ise derleyicinin katı kurallarını bir tavan değil, bir taban gibi hissettirir. Bu kılavuzdaki araçlar alfabetik olarak değil, gerçekte ne yaptıklarına göre düzenlenmiştir; böylece ekipler üç kalite katmanını da kapsayan bir yığın oluşturabilir: kod denetimi ve kalıpları, bağımlılık güvenliği ve güvenlik açısından kritik veya hassas kodlar için derin doğrulama.
SMART TS XL
Modern Rust geliştirmede kaliteyi korumak, dilin güçlü güvenlik garantilerine rağmen zorlu bir iştir. SMART TS XL Rust'ın benzersiz özelliklerine göre uyarlanmış derin statik analiz yetenekleri sunarak ekiplerin güvenilir, sürdürülebilir ve güvenli yazılımlar oluşturmasına yardımcı olmak üzere tasarlanmıştır. Sorunları erken tespit ederek, tutarlılığı sağlayarak ve manuel inceleme çabasını azaltarak profesyonel mühendislik iş akışlarını destekler.
Rust Statik Analizinin Üç Katmanı
Hangi aracın nereye ait olduğunu anlamak, bir linter'ın yeterli olacağı yerde biçimsel bir doğrulayıcı kullanma veya bir güvenlik tarayıcısının gerekli olduğu yerde bir linter'a güvenme gibi yaygın hataları önler. Her olgun Rust projesi bu üç katmanı da kapsamalıdır.
Katman 1: Tüy temizleme ve şekillendirme Deyimsel ihlalleri, yaygın hataları ve sürdürülebilirlik sorunlarını yakalar. Araçlar: Clippy, rustfmt, rust-analyzer.
Katman 2: Bağımlılık ve tedarik zinciri güvenliği Üçüncü taraf kütüphanelerini bilinen güvenlik açıkları ve politika ihlalleri açısından denetler. Araçlar: cargo-audit, cargo-deny, cargo-auditable.
Katman 3: Derin doğrulama Güvenli olmayan kodlardaki bellek güvenliği sorunlarını, tanımsız davranışları bulur ve kritik fonksiyonların özelliklerini resmi olarak kanıtlar. Kullanılan araçlar: Miri, Kani, MIRAI, Rudra, Creusot, Prusti.
Aşağıdaki tabloda her bir önemli araç, ilgili katman, maliyet, sürekli entegrasyon (CI) uygunluğu ve birincil kullanım alanı ile eşleştirilmiştir:
| araç | tabaka | Ücret | CI Uygun | Birincil Kullanım Örneği |
|---|---|---|---|---|
| Clippy | Hav bırakma | Ücretsiz / Açık Kaynak Yazılım | Evet | Deyimsel kod denetimi, stil, yaygın hatalar |
| pas formu | Hav bırakma | Ücretsiz / Açık Kaynak Yazılım | Evet | Kod biçimlendirme zorunluluğu |
| pas analizörü | Tüy Temizleme / DX | Ücretsiz / Açık Kaynak Yazılım | Kısmi | IDE tanılama, satır içi analiz |
| kargo denetimi | Bağımlılık güvenliği | Ücretsiz / Açık Kaynak Yazılım | Evet | Kasa dosyalarındaki bilinen CVE'ler |
| kargo reddi | Bağımlılık güvenliği | Ücretsiz / Açık Kaynak Yazılım | Evet | Lisans, kopyalar, uyarılar |
| kargo denetlenebilir | Bağımlılık güvenliği | Ücretsiz / Açık Kaynak Yazılım | Evet | Bağımlılık verilerini ikili dosyalara yerleştirin. |
| Miri | Derin doğrulama | Ücretsiz / Açık Kaynak Yazılım | Seçici | Güvenli olmayan kodda tanımsız davranış |
| Kani | Derin doğrulama | Ücretsiz / Açık Kaynak Yazılım | Seçici | Biçimsel doğrulama, model kontrolü |
| MIRAI | Derin doğrulama | Ücretsiz / Açık Kaynak Yazılım | Seçici | Soyut yorumlama, kirlilik analizi |
| Rudra | Derin doğrulama | Ücretsiz / Açık Kaynak Yazılım | Araştırma | Güvenli olmayan Rust'ta bellek güvenliği hataları |
| Segrep | çapraz kesim | Ücretsiz kademe + ücretli | Evet | Özel güvenlik kalıpları, çok dilli |
| SonarBulut | çapraz kesim | Ücretsiz kademe + ücretli | Evet | Sürekli kalite kontrol noktası, gösterge panelleri |
Katman 1: Kod Denetimi, Stil ve Geliştirici Deneyimi
Clippy
Clippy, Rust statik analizi için kesin başlangıç noktasıdır. Resmi Rust araç zinciriyle birlikte gelen Clippy, doğruluk, performans, stil, karmaşıklık ve kısıtlamaları kapsayan 700'den fazla kod denetimi (lint) sunar. Rust ekiplerinin çoğunun günlük olarak kullandığı bir araçtır ve bunun iyi bir nedeni var: sadece stil görüşlerini değil, gerçek hataları yakalar.
darbe
# Run all lints including pedantic and nursery groups
cargo clippy -- -W clippy::all -W clippy::pedantic
# Fail CI on any warning
cargo clippy -- -D warnings
# Check specific lint group
cargo clippy -- -W clippy::correctness -W clippy::suspicious
Clippy'nin tüy kategorilerini ayrıntılı olarak anlamak önemlidir:
| Kategoriler | Ne Yakalar |
|---|---|
correctness | Neredeyse kesinlikle yanlış olan kod (her zaman reddet) |
suspicious | Muhtemelen yanlış veya çok şaşırtıcı kod |
style | Belirgin bir iyileşme gösteren, deyimsel olmayan kalıplar |
complexity | Gereksiz derecede karmaşık yapılar |
performance | Derlenen ancak olması gerekenden daha yavaş çalışan kod. |
pedantic | Sıkı kurallar, görüş odaklı (seçici olarak etkinleştir) |
restriction | Belirli durumlarda uygulamak isteyebileceğiniz kurallar |
nursery | Yeni tüy parçacıkları yanlış pozitif sonuçlara yol açabilir. |
kargo kontrolü vs clippy: cargo check İkili dosya oluşturmadan tür doğruluğunu ve derlemeyi doğrular. Hızlıdır ve derleme doğrulaması için uygundur. cargo clippy ishal cargo check Ayrıca tüm lint analizlerini de içerir. CI için şunu çalıştırın: cargo check hızlı derleme geri bildirimi için ve cargo clippy -- -D warnings Ayrı bir kalite kontrol noktası olarak. Bunlar birbirinin yerine kullanılamaz: cargo check Deyimsel problemleri yakalayamaz ve cargo clippy daha yavaştır.
Clippy'yi Yapılandırma üzerinden clippy.toml Veya satır içi özellikler, ekiplere gürültüyü kontrol etme olanağı sağlar:
tom
# clippy.toml
avoid-breaking-exported-api = false
msrv = "1.70"
pas
// Suppress a lint for one function with documented reason
#[allow(clippy::too_many_arguments)]
fn complex_setup(...) { ... }
Clippy'nin kapsamadığı konular şunlardır: modüller arası derin veri akışı analizi, bağımlılıklardaki güvenlik açığı taraması, resmi doğruluk ispatı veya kuruluşa özgü özel kurallar. Bunlar diğer katmanlardaki araçları gerektirir.
pas formu
rustfmt, tüm kod tabanında tutarlı biçimlendirmeyi sağlamak için şu yöntemi kullanır: cargo fmt. rustfmt.toml Yapılandırma dosyası, proje genelinde stil kurallarını belirler. CI'da, cargo fmt -- --check Herhangi bir dosya yeniden biçimlendirilirse sıfırdan farklı bir kodla çıkış yapar, bu da onu yapılandırma yükü olmayan temiz bir kalite kontrol noktası haline getirir:
darbe
# Check formatting without modifying files (CI mode)
cargo fmt -- --check
# Apply formatting (developer mode)
cargo fmt
pas analizörü ve IDE Entegrasyonu
rust-analyzer, Rust için Dil Sunucusu Protokolü (LSP) uygulamasıdır ve herhangi bir LSP uyumlu editörde gerçek zamanlı teşhis, otomatik tamamlama, tanıma gitme ve satır içi Clippy uyarıları sağlar. Kullanımdan kaldırılan RLS'nin (Rust Dil Sunucusu) yerini almıştır ve yeni projelerde kullanılacak tek dil sunucusu olmalıdır.
Statik analiz açısından bakıldığında, rust-analyzer geliştiriciler yazarken Clippy kod denetimlerini satır içi olarak gösterir ve ayrı bir terminal çalıştırması gerektirmek yerine, kodun ortaya çıktığı anda stil ve doğruluk sorunları hakkında anında geri bildirim sağlar:
json
// VS Code settings.json: enable Clippy via rust-analyzer
{
"rust-analyzer.check.command": "clippy",
"rust-analyzer.check.extraArgs": [
"--", "-W", "clippy::all", "-W", "clippy::pedantic"
]
}
rust-analyzer ayrıca, bilinmeyen kodları tanımlara gitmeden incelemek için yararlı olan, çıkarılan türler, ödünç alma ömürleri ve parametre adları için yerleşik ipuçları da sağlar.
Katman 2: Bağımlılık ve Tedarik Zinciri Güvenliği
kargo denetimi
kargo denetimi kontrolleri Cargo.lock RustSec Danışma Veritabanına karşı bir dosya oluşturarak, doğrudan ve dolaylı bağımlılıklardaki bilinen CVE'leri tanımlar. Her Rust projesinin CI'da çalıştırması gereken minimum bağımlılık güvenliği aracıdır.
darbe
# Install
cargo install cargo-audit
# Run audit
cargo audit
# Ignore a specific advisory (document the reason in comments)
cargo audit --ignore RUSTSEC-2024-0001
# JSON output for pipeline integration
cargo audit --json | jq '.vulnerabilities'
cargo-audit yalnızca bilinen, yayınlanmış güvenlik uyarılarını kapsar. Kendi kodunuzdaki güvenlik açıklarını, RustSec veritabanında henüz yer almayan sorunları veya istenmeyen lisanslar gibi politika ihlallerini tespit edemez.
kargo reddi
`cargo-deny`, bağımlılık yönetimini bilinen CVE'lerin ötesine, lisans uyumluluğuna, yinelenen crate tespitine ve özel yasaklama/izin verme politikalarına kadar genişletir. Uyumluluk gereksinimleri olan kuruluşlar için daha kapsamlı bir araçtır:
tom
# deny.toml
[advisories]
vulnerability = "deny"
unmaintained = "warn"
[licenses]
allow = ["MIT", "Apache-2.0", "ISC", "BSD-2-Clause", "BSD-3-Clause"]
deny = ["GPL-2.0"]
copyleft = "warn"
[bans]
multiple-versions = "warn"
darbe
cargo install cargo-deny
cargo deny check
kargo denetlenebilir
`cargo-auditable`, derlenmiş Rust ikili dosyalarına bağımlılık ağacının tamamını, özel bir bağlayıcı bölümünde yapılandırılmış meta veri olarak yerleştirir. Bu sayede, kaynak koduna erişim olmadan dağıtılmış ikili dosyaları denetlemek mümkün olur; bu da dağıtım sonrası güvenlik incelemesi ve tedarik zinciri şeffaflığı için değerlidir.
darbe
cargo install cargo-auditable
cargo auditable build --release
# The binary now contains auditable dependency metadata
# Audit a binary directly:
cargo audit bin ./target/release/my-service
Katman 3: Derin Doğrulama
Bu katmandaki araçlar daha fazla kurulum, daha fazla uzmanlık ve daha uzun analiz süreleri gerektirir. Her kod tabanındaki her işlev için uygun değillerdir. Güvenli olmayan kodlar, kriptografik uygulamalar, güvenilmeyen girdileri işleyen ayrıştırıcı mantığı ve doğruluğunun test edilmek yerine kanıtlanması gereken her türlü kod için gereklidirler.
Miri: Tanımlanmamış Davranış Tespiti
Miri, Rust'ın Orta Seviye Ara Temsili (MIR) için bir yorumlayıcıdır ve derleyicinin izin verdiği ancak Rust'ın güvenlik garantilerini ihlal eden tanımsız davranışları tespit edecek şekilde kod yürütür: güvenli olmayan bloklarda bellek sınırlarının dışına erişim, serbest bırakıldıktan sonra kullanım, yanlış hizalanmış işaretçi referanssızlaştırmaları, çok iş parçacıklı güvenli olmayan kodda veri yarışları ve Rust'ın takma adlandırma modelinin ihlalleri.
darbe
# Install Miri (requires nightly)
rustup +nightly component add miri
# Run tests under Miri
cargo +nightly miri test
# Enable strict aliasing validation
MIRIFLAGS="-Zmiri-strict-provenance" cargo +nightly miri test
Miri'nin tespit ettiği şey: tanımsız davranış unsafe Bloklar, bellek erişim ihlalleri, serbest bırakıldıktan sonra kullanım, yanlış hizalanmış erişimler, hata ayıklama derlemelerinde tamsayı taşması, güvenli olmayan eşzamanlı kodda veri yarışları.
Miri'nin kapsamadığı konular: Tanımlanmamış davranış, bağımlılık güvenlik açıkları, kod stili veya performans sorunları içermeyen, güvenli kodda bulunan mantık hataları.
CI entegrasyonuMiri, diğerlerine göre 10-50 kat daha yavaş çalışıyor. cargo test. Bunu, içeren modüller üzerinde seçici olarak çalıştırın. unsafe kod, her commit işleminde değil, gecelik bir zamanlama ile veya belirli aralıklarla güncellenir:
tatlım
- name: Miri on unsafe modules
run: |
rustup +nightly component add miri
cargo +nightly miri test --package my-unsafe-crate
Kani: Model Kontrolü ve Biçimsel Doğrulama
Amazon Web Services tarafından geliştirilen Kani, tanımlanmış bir sınıra kadar yürütme yollarını kapsamlı bir şekilde inceleyerek Rust kodunun özelliklerini resmi olarak doğrulayan bir model denetleyicisidir. Miri gerçek test durumlarını çalıştırıp somut hatalar bulurken, Kani analiz kapsamındaki tüm girdiler için özelliklerin geçerli olup olmadığını kanıtlar veya çürütür.
Kani, doğrulama araçları yazmayı gerektirir: giriş alanını ve doğrulanacak özellikleri tanımlayan işlevler.
pas
#[cfg(kani)]
mod verification {
use super::*;
#[kani::proof]
fn verify_add_no_overflow() {
let a: u32 = kani::any();
let b: u32 = kani::any();
if a.checked_add(b).is_some() {
let result = safe_add(a, b);
assert!(result == a + b);
}
}
}
darbe
cargo install --locked kani-verifier
cargo kani setup
cargo kani
En uygun kullanım alanları: güvenlik açısından kritik fonksiyonlar, protokol uygulamaları, finansal veya kriptografik kodlardaki aritmetik işlemler ve yalnızca test etmek değil, bir doğruluk özelliğini kanıtlamanız gereken her türlü fonksiyon.
MIRAI: Soyut Yorumlama ve Kirlilik Analizi
Facebook Araştırma tarafından geliştirilen MIRAI, Rust'ın MIR'ini analiz etmek için soyut yorumlama kullanır. Fonksiyon çağrıları boyunca değerlerin nasıl aktığını izleyen, potansiyel hataları, sözleşme ihlallerini ve kod içindeki kirlilik yayılımını tespit eden prosedürler arası analiz gerçekleştirir.
pas
use mirai_annotations::*;
fn divide(a: i32, b: i32) -> i32 {
precondition!(b != 0); // MIRAI verifies all callers satisfy this
a / b
}
MIRAI, günlük olarak yayınlanan bir Rust derleyicisi gerektirir ve kurulum eğrisi diktir; bu nedenle, güvenlik mühendisliği kapasitesine sahip veya araştırma odaklı kalite gereksinimleri olan ekipler için en uygunudur.
Rudra: Güvenli Olmayan Kütüphane Kodunda Bellek Güvenliği
Rudra, Rust'ın sahiplik modeline özgü bellek güvenliği hatalarını tespit etmek için kütüphaneler genelinde tüm programı analiz eder: Send/Sync özellik güvenliği ihlalleri, sağlıksız ömür uzatmasına izin veren üst düzey ömür sorunları ve güvenli olmayan kodda panik güvenliği sorunları. Başlangıçta araştırmacılar tarafından geliştirilen bu araç, bir derleyici eklentisi olarak çalışır ve belirli bir gece sürümünü gerektirir. Güvenli olmayan iç yapıya sahip kütüphaneler için her commit'te değil, planlı bir şekilde çalıştırın.
Creusot ve Prusti: Tümdengelimsel Doğrulama
Creusot ve Prusti, Rust programlarının matematiksel özelliklerini kanıtlayan tümdengelimli doğrulama araçlarıdır. Her ikisi de biçimsel şartnameler (ön koşullar, son koşullar, döngü değişmezleri) gerektirir ve uygulamaları bu şartnamelere karşı doğrulamak için otomatik teorem ispatlayıcıları kullanır. Güvenli Rust'ın sınırlı bir alt kümesini hedeflerler ve biçimsel yöntemler konusunda uzmanlık gerektirirler. Düzenlemeye tabi sektörler, kriptografik kütüphane geliştirme veya matematiksel doğruluk ispatının sözleşmesel veya düzenleyici bir gereklilik olduğu herhangi bir bağlam için uygundurlar.
Dahil Edilmesi Gereken Ek Araçlar
Özel Güvenlik Desenleri için Semgrep
Semgrep, birden fazla dilde eş zamanlı olarak çalışan, kalıp tabanlı statik analiz sağlar. Rust için, ekiplerin Clippy'nin ifade edemediği kurumsal güvenlik politikalarını ve kod tabanına özgü kalıpları uygulayan özel kurallar yazmasına olanak tanır:
tatlım
# Custom rule: flag .unwrap() in production paths
rules:
- id: no-unwrap-in-production
pattern: $X.unwrap()
message: "Use proper error handling instead of .unwrap()"
languages: [rust]
severity: WARNING
Semgrep ayrıca, topluluk tarafından sürdürülen Rust güvenlik kurallarını içeren yönetilen bir kural kayıt defteri de sunmaktadır.
Sürekli Kalite Kontrolleri için SonarCloud / SonarQube
SonarCloud, gösterge paneli, trend takibi ve çekme isteği işaretlemesi ile sürekli kod kalitesi analizi sağlar. Rust desteği, yaygın hata kalıplarını, güvenlik açıklarını ve kod kokularını kapsar. SonarCloud'u diğer diller için zaten kullanan kurumsal ekipler için, aynı işlem hattına Rust eklemek, yığın genelinde birleşik kalite görünürlüğü sağlar.
Katmanlı Bir CI/CD İşlem Hattı Oluşturma
Aşağıdaki GitHub Actions iş akışı, aşırı mühendislik yapmadan kapsamlı Rust kalite kontrolü sağlamak isteyen ekipler için pratik bir başlangıç noktasıdır:
tatlım
# .github/workflows/quality.yml
name: Code Quality and Security
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: Check formatting
run: cargo fmt -- --check
- name: Clippy (treat warnings as errors)
run: cargo clippy -- -D warnings
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install security tools
run: |
cargo install cargo-audit
cargo install cargo-deny
- name: Dependency audit
run: cargo audit --deny warnings
- name: License and policy check
run: cargo deny check
verify:
runs-on: ubuntu-latest
# Scheduled or manually triggered, not on every push
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri
- name: Miri on unsafe modules
run: cargo +nightly miri test --package my-unsafe-crate
Hangi Aleti Kullanmalısınız? Karar Kılavuzu
Yeni bir Rust projesine başlıyorum.Clippy + rustfmt + cargo-audit. Beş dakikadan kısa sürede yapılandırılabilir, ekiplerin karşılaştığı kalite ve güvenlik sorunlarının çoğunu yakalar.
Harici bağımlılıkları olan üretim hizmeti: CVE'lerin ötesinde lisans uyumluluğu ve tedarik zinciri politikası uygulaması için cargo-deny özelliğini ekleyin.
Güvenli olmayan iç yapıya sahip kütüphane kasasıGüvenli olmayan kod içeren modüller için test paketine Miri'yi ekleyin. Rudra'yı düzenli aralıklarla çalıştırın.
Güvenlik açısından kritik veya kriptografik kodEn kritik fonksiyonlar için Kani doğrulama araçları yazın. Ekibin biçimsel yöntemler konusunda uzmanlığı varsa Creusot veya Prusti'yi de göz önünde bulundurun.
Güvenlik odaklı kuruluş: Kurumsal güvenlik politikaları için özel kurallar içeren Semgrep'i ekleyin ve sürüm derlemelerinde cargo-auditable özelliğini kullanın.
Daha büyük bir ekip için sürekli görünürlükSonarCloud, açık kaynaklı araçların yanı sıra trend takibi, çekme isteği düzenlemesi ve kalite kontrolleri için kullanılıyor.
Çok dilli işletme ortamı Rust'ın COBOL, Java veya diğer eski dillerle etkileşimde bulunduğu yerlerde: tek dilli Rust araçları dil sınırının ötesini göremez. SMART TS XL Sistemin tamamını kapsayan diller arası analiz sağlar.
Rust Statik Analizi Kurumsal Sistemlerle Buluştuğunda
Rust, ana bilgisayar veya eski platformlarda COBOL, Java, PL/I veya RPG çalıştıran kuruluşlarda yeni hizmetler için giderek daha fazla kullanılmaktadır. Bu ortamlarda, statik analiz tablosu, Rust'a özgü herhangi bir aracın görebileceğinin ötesine uzanır. Bir Rust mikro hizmeti, bir COBOL programını çağırabilir, paylaşılan bir veritabanına yazabilir veya eski bir toplu iş sistemi tarafından üretilen olayları tüketebilir. Kurumsal bir mimar için önemli olan kalite ve bağımlılık analizi, tüm bu sistemleri eş zamanlı olarak kapsar.
SMART TS XL Bu eksikliği gidermek için, tüm uygulama portföyünde diller arası bağımlılık analizi sağlar. Clippy ve cargo-audit yalnızca Rust'ı görürken, SMART TS XL Bu araç, bir Rust servisinin paylaşılan veri yapılarına, eski programlara ve kurumsal API'lara nasıl bağımlı olduğunu ve bu bağımlılıklardan herhangi birinin değiştirilmesinin etkisinin ne olacağını haritalandırır. Bu da onu tercih edilen araç haline getirir. etki analizi hem de miras modernizasyon planlaması Rust'ın birçok dil arasında yer aldığı ortamlarda.
Kurumsal kod tabanında Rust'ı aşamalı olarak benimseyen ekipler için, SMART TS XL'S statik kod analizi Bu, Rust bileşenlerinin daha büyük sisteme nasıl uyduğunu anlamak için gereken yapısal görünürlüğü sağlar; böylece diğer dillerde yazılmış bileşenleri etkileyebilecek değişiklikler yapılmadan önce bu anlaşılabilir. Aşağıdaki bağlamda incelendiğinde: bağımlılık grafikleri ve uygulama riskiBir sistemi genişletmeden önce tam bağımlılık yapısını haritalamak, sorunsuz giden değişiklikleri, kimsenin test etmeyi düşünmediği bileşenlerde arızalara yol açan değişikliklerden ayıran şeydir.
Katmanlı Yaklaşım Asıl Önemli Nokta
Rust'ta statik analiz tek bir araç kararıyla çözülebilecek bir şey değildir. Derleyicinin size ücretsiz olarak sunduklarıyla başlayan ve kodunuzun risk profiline göre genişleyen katmanlı bir disiplindir. Clippy ve rustfmt temel araçlardır. Harici bağımlılıkları olan her proje için cargo-audit olmazsa olmazdır. Güvenli olmayan kod içeren her projede Miri kullanılmalıdır. Kani ve biçimsel doğrulama araçları ise yanlış yapmanın kabul edilemez olduğu fonksiyonlar içindir.
Bu işi doğru yapan ekipler, statik analizi geliştirme döngüsüne entegre eder: Editörde Clippy, her CI çalıştırmasında cargo-audit ve testlerin tek başına yakalayamadığı hataları yakalayan gece çalışan bir Miri. Sonuç sadece daha az hata değil. Bu, ekiplerin geliştirici ve üretim arasındaki analiz katmanlarının doğru çalıştığını bilerek hızlı bir şekilde değişiklik yapmalarını sağlayan bir kod tabanına duyulan güvendir.