# Statik Analiz

Adres: https://softwaredictionary.org/tr/terimler/static-analysis
Kategori: Test ve Kalite
Son güncelleme: 2026-09-30
İngilizcesi: Static Analysis
Okunuşu: stetik ınelısis

Kısaca: Statik analiz, hataları, güvenlik açıklarını ve kalite sorunlarını erken bulmak için kaynak kodun çalıştırılmadan otomatik olarak incelenmesidir.

## Statik analiz nedir?

Statik analiz, hataları, güvenlik açıklarını ve kod kalitesi sorunlarını bulmak için bir programın kaynak kodunu ya da derlenmiş biçimini çalıştırmadan incelemek demektir. Statik, kodun hareketsiz hâlde incelendiği anlamına gelir. Karşıtı, testlerin, profiler'ların ve fuzzer'ların yaptığı gibi programı çalışırken gözlemleyen dinamik analizdir.

Bir statik analiz aracı, kodu yapısının ağaç biçimli bir temsili olan soyut sözdizimi ağacına (AST) ayrıştırır ve çoğu zaman kontrol ve verinin program boyunca nasıl aktığını gösteren grafikler oluşturur. Kontroller, sabit kodlanmış bir parolayı fark etmek gibi basit örüntü eşleştirmeden; tip denetimi, olası null erişimlerini tespit etme, kaynak sızıntılarını bulma ve bir HTTP isteğinden gelen değer gibi güvenilmeyen girdiyi izleyerek denetlenmeden bir SQL sorgusuna ulaşıp ulaşamadığını gören taint analizi gibi derin analizlere kadar uzanır. Hiçbir araç her programın her özelliğine kusursuzca karar veremeyeceğinden her biri yanlış pozitifler (gerçek olmayan sorunlar hakkındaki uyarılar) ile yanlış negatifler (kaçırdığı gerçek hatalar) arasında bir denge kurar.

Statik analiz, bir mühendisin binanın ayakta durup durmayacağını beklemek yerine inşaat başlamadan önce yapısal kusurlar için planları incelemesi gibidir. Editörlerde, pre-commit hook'larında, CI/CD hatlarında ve kod incelemesinde çalışır; böylece sorunlar yazıldıktan dakikalar sonra ortaya çıkar. Güvenlik odaklı statik analize genellikle static application security testing'in kısaltması olan SAST denir.

Statik analiz sıklıkla linting ile karıştırılır. Linting, çoğunlukla bir seferde tek bir dosyaya bakarak esas olarak stile ve yaygın hatalara odaklanan hafif bir statik analiz türüdür; daha derin statik analiz araçları ise ince hataları bulmak için veriyi fonksiyonlar ve dosyalar arasında izler. TypeScript derleyicisi gibi bir derleyicinin tip denetleyicisi de bir statik analiz biçimidir. Bunların hiçbiri testlerin yerini almaz: testler kodun belirli girdiler için gerçekte ne yaptığını kanıtlar; statik analiz ise olası tüm yolları akıl yürütür ama programın ne yapması gerektiğini bilemez.

## Önemli noktalar

- Statik analiz, kodu çalıştırmadan inceler.
- Hataları, güvenlik açıklarını ve kalite sorunlarını erken bulur.
- Teknikler örüntü eşleştirmeden veri akışı ve taint analizine kadar uzanır.
- Her araç yanlış pozitifler ile kaçırılan hatalar arasında bir denge kurar.
- Linting ve tip denetimi, statik analizin yaygın biçimleridir.

## Örnek: Bir statik analiz aracının kodu çalıştırmadan raporladığı sorunlar

```python
def find_user(conn, username):
    # The tool traces "username" (untrusted input) into a SQL string:
    # warning: possible SQL injection, tainted data reaches a query
    query = f"SELECT * FROM users WHERE name = '{username}'"
    return conn.execute(query).fetchall()

def order_total(items):
    total = 0
    for item in items:
        total += item.price
    return totl  # error: undefined name 'totl'
```

## Sık sorulan sorular

**Statik analiz ile dinamik analiz arasındaki fark nedir?**

Statik analiz, kodu çalıştırmadan inceler; bu yüzden tüm yollar hakkında akıl yürütebilir ama yanlış alarmlar verebilir. Dinamik analiz ise programı testler ya da fuzzing sırasında olduğu gibi çalışırken gözlemler; bu yüzden gerçek davranışı görür, ancak yalnızca denediği girdiler için.

**SAST nedir?**

SAST, static application security testing ifadesinin kısaltmasıdır: enjeksiyon açıkları, güvensiz kriptografi ve sabit kodlanmış sırlar gibi güvenlik kusurlarına odaklanan statik analiz. Genellikle CI/CD hattında otomatik olarak çalıştırılır.

**Linter bir statik analiz aracı mıdır?**

Evet. Linter, yaygın hatalara ve stile odaklanan hafif bir statik analiz aracıdır; daha gelişmiş analizörler ise tüm bir kod tabanında veri ve kontrol akışını izler.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
