Statik tip sistemler bir tür statik analizdir, ancak tip sistemlerde genellikle kodlanmayan birçok statik analiz vardır. Örneğin:
Model kontrolü , eşzamanlı sistemler için programınızın olası tüm iplik aralıkları altında iyi davrandığını kanıtlamanızı sağlayan bir analiz ve doğrulama tekniğidir.
Veri akışı analizi , bazı hesaplamaların gereksiz olup olmadığını veya bir hatanın hesaba katılmadığını belirleyebilen değişkenlerin olası değerleri hakkında bilgi toplar.
Soyut yorumlama , bir programın etkilerini, genellikle analizin sona erdirileceği garanti edilecek şekilde konservatif olarak modeller - tip denetleyiciler soyut yorumlayıcılara benzer şekilde uygulanabilir.
Ayırma mantığı , program durumları hakkında akıl yürütmek ve boş işaretçi dereferences, geçersiz durumlar ve kaynak sızıntıları gibi sorunları tanımlamak için kullanılabilen bir program mantığıdır (örneğin Infer analizöründe kullanılır).
Sözleşmeye dayalı programlama , önkoşulları, sonkoşulları, yan etkileri ve değişmezleri belirtmenin bir yoludur. Ada , sözleşmeler için yerel desteğe sahiptir ve bazılarını statik olarak doğrulayabilir.
Optimizasyon derleyicileri, SSA, satır içi maliyet tahminleri, talimat eşleştirme bilgileri vb. Gibi optimizasyon sırasında kullanılmak üzere ara veri yapıları oluşturmak için birçok küçük analiz yapar.
Deklaratif olmayan statik analizin başka bir örneği, normal kontrol akışı yapılarının bir değişkenin türünü geliştirebileceği Hack daktiloda bulunur:
$x = get_value();
if ($x !== null) {
$x->method(); // Typechecks because $x is known to be non-null.
} else {
$x->method(); // Does not typecheck.
}
Ve “arıtma” dan bahsetmek gerekirse , tip sistemlerin topraklarında, arıtma türleri ( LiquidHaskell'de kullanıldığı gibi ), “rafine” tip örnekleri için tutulacağı garanti edilen çift tipler. Bağımlı türler bunu daha ileri götürür ve türlerin değerlere bağımlı olmasını sağlar. Bağımlı yazmanın “merhaba dünyası” genellikle dizi birleştirme işlevidir:
(++) : (a : Type) -> (m n : Nat) -> Vec a m -> Vec a n -> Vec a (m + n)
Burada, ++
iki tür işlenen alır Vec a m
ve Vec a n
eleman türü a
ve uzunlukları olan m
ve n
sırasıyla doğal sayılar ( Nat
) olan vektörler . Uzunluğu aynı eleman türünde bir vektör döndürür m + n
. Ve bu fonksiyon, ve özel değerlerini bilmeden bu kısıtlamayı soyut olarak kanıtlar m
ve n
böylece vektörlerin uzunlukları dinamik olabilir.