# Nano Banana: AI Kod Review ve Otomatik Bug Tespit Platformu
Kod review, yazılım geliştirmenin en kritik ama en çok zaman alan süreçlerinden biri. Ortalama bir pull request review'ı 30-60 dakika sürüyor ve insan gözü her zaman her detayı yakalayamıyor. Nano Banana, AI destekli kod analizi ile bu süreci devrim niteliğinde dönüştürüyor. Gerçek zamanlı bug tespiti, güvenlik açığı taraması, performans önerileri ve code smell algılama — hepsi CI/CD pipeline'ına entegre, saniyeler içinde. Bu yazıda Nano Banana'nın nasıl çalıştığını, hangi bug pattern'leri yakaladığını ve onu nasıl projelerine entegre edebileceğini detaylıca anlatacağım.
💡 Pro Tip: Nano Banana'nın ücretsiz tier'ı ayda 500 PR review'a kadar destekliyor. Açık kaynak projeler için tamamen ücretsiz. Kurumsal kullanımda ise team bazlı lisanslama mevcut.
İçindekiler
- Nano Banana Nedir?
- Bug Pattern Detection Mekanizması
- CI/CD Entegrasyonu
- Güvenlik Taraması
- Performans Analizi
- Desteklenen Diller ve Framework'ler
- Rakiplerle Karşılaştırma
- Sonuç ve Öneriler
Nano Banana Nedir?
Nano Banana, 2025 başında kurulan bir AI-native kod analiz platformu. Klasik static analysis araçlarından (ESLint, SwiftLint, SonarQube) farklı olarak, LLM tabanlı semantik kod anlama yeteneğine sahip.
Geleneksel vs AI-Native Analiz
Özellik | Geleneksel (ESLint/SonarQube) | AI-Native (Nano Banana) |
|---|---|---|
**Kural bazlı** | Evet (regex/AST) | Evet + semantik anlama |
**Bağlam anlama** | Dosya seviyesi | Proje seviyesi |
**Bug tespiti** | Bilinen pattern'ler | Bilinen + bilinmeyen |
**Güvenlik** | CVE veritabanı | CVE + AI anomali tespiti |
**False positive** | %15-25 | %3-5 |
**Öğrenme** | Statik kurallar | Projeden öğrenir |
**Review kalitesi** | Teknik doğruluk | Teknik + mimari + stil |
Nasıl Çalışır?
// Nano Banana Analiz Pipeline:
//
// 1. PR açıldığında GitHub/GitLab webhook tetiklenir
// 2. Diff analizi: Hangi dosyalar değişti?
// 3. Context toplama: İlgili dosyaları da oku (import chain)
// 4. AST + Semantic analiz: Kod yapısını anla
// 5. LLM analizi: Bug, security, performance, style
// 6. Proje kuralları: .nanobanana.yml config kontrolü
// 7. Sonuç: Inline comment'ler + summary report
Bug Pattern Detection Mekanizması
Nano Banana'nın en güçlü yanı, geleneksel araçların yakalayamadığı semantik bug'ları tespit edebilmesi.
Yakalanan Bug Kategorileri
1. Logic Errors (Mantık Hataları):
// Örnek: Off-by-one error
// Nano Banana bu kodu flagler:
//
// func processItems(items: [Item]) {
// for i in 0...items.count { // BUG: 0...count yerine 0..<count
// print(items[i]) // Index out of range crash
// }
// }
//
// Nano Banana comment:
// "⚠️ Off-by-one error: 0...items.count items.count
// index'ine erişmeye çalışır ve crash oluşturur.
// Düzeltme: 0..<items.count kullanın."
2. Race Conditions:
// Nano Banana concurrent code'da race condition tespit eder:
//
// class Counter {
// var count = 0 // BUG: Thread-safe değil
//
// func increment() {
// count += 1 // Data race
// }
// }
//
// Nano Banana comment:
// "🔴 Data Race: 'count' property'si birden fazla
// thread'den erişilebilir ama senkronizasyon yok.
// Öneriler: 1) actor kullanın, 2) @Sendable ile
// isolation, 3) OSAllocatedUnfairLock"
3. Memory Leaks:
// Retain cycle tespiti:
//
// class ViewController {
// var onComplete: (() -> Void)?
//
// func setup() {
// onComplete = {
// self.updateUI() // BUG: Strong capture
// }
// }
// }
//
// Nano Banana comment:
// "🟡 Retain Cycle: self closure içinde strong capture
// edilmiş. [weak self] guard let self else { return }
// pattern'ini kullanın."
4. API Misuse:
// Deprecated veya yanlış API kullanımı:
//
// URLSession.shared.dataTask(with: url) { data, _, _ in
// DispatchQueue.main.async {
// self.label.text = String(data: data!, encoding: .utf8)
// // BUG: Force unwrap + no error handling
// }
// }.resume()
//
// Nano Banana comment:
// "🔴 Force Unwrap: data! crash riski. Ayrıca async/await
// pattern'i tercih edin. Error handling eksik."
Bug Severity Seviyeleri
Seviye | Renk | Aksiyon | Örnek |
|---|---|---|---|
**Critical** | Kırmızı | PR bloklanır | Memory leak, crash, security |
**Warning** | Sarı | Review gerekir | Performance, deprecated API |
**Info** | Mavi | Bilgilendirme | Style, naming convention |
**Suggestion** | Yeşil | Opsiyonel | Refactoring önerisi |
💡 Pro Tip: ".nanobanana.yml" config dosyasında severity threshold ayarlayabilirsin. Critical bug'larda PR'ı otomatik bloklama, warning'lerde sadece yorum bırakma gibi kurallar tanımlanabilir.
CI/CD Entegrasyonu
Nano Banana'yı mevcut CI/CD pipeline'ına entegre etmek oldukça kolay.
GitHub Actions Entegrasyonu
yaml
1# .github/workflows/nano-banana.yml2name: Nano Banana Code Review3on:4 pull_request:5 types: [opened, synchronize]6 7jobs:8 review:9 runs-on: ubuntu-latest10 steps:11 - uses: actions/checkout@v412 with:13 fetch-depth: 014 15 - uses: nanobanana/action@v216 with:17 api-key: ${{ secrets.NB_API_KEY }}18 severity-threshold: warning19 languages: swift,typescript20 config: .nanobanana.yml21 comment-on-pr: true22 block-on-critical: trueProje Konfigürasyonu
yaml
1# .nanobanana.yml2version: 23languages:4 - swift5 - typescript6 7rules:8 security:9 enabled: true10 severity: critical11 performance:12 enabled: true13 severity: warning14 style:15 enabled: true16 severity: info17 18ignore:19 - '*.generated.swift'20 - 'Pods/**'21 - 'node_modules/**'22 23custom_rules:24 - name: no-force-unwrap25 pattern: '![^=]'26 severity: critical27 message: 'Force unwrap kullanmayın — guard let veya if let kullanın'28 - name: use-async-await29 pattern: 'DispatchQueue.main.async'30 severity: warning31 message: 'async/await pattern tercih edin'GitLab CI Entegrasyonu
// .gitlab-ci.yml
//
// nano-banana-review:
// stage: review
// image: nanobanana/cli:latest
// script:
// - nano-banana review --config .nanobanana.yml
// only:
// - merge_requests
CI/CD Pipeline yazımızda anlattığımız GitHub Actions yapısına Nano Banana'yı bir step olarak eklemek, kod kalitesini dramatik şekilde artırıyor.
Güvenlik Taraması
Nano Banana'nın güvenlik modülü, OWASP Top 10 ve CWE veritabanı üzerine kurulu ama AI ile zenginleştirilmiş.
Tespit Edilen Güvenlik Açıkları
Kategori | Geleneksel | Nano Banana | Fark |
|---|---|---|---|
SQL Injection | %90 | %98 | Semantic pattern |
XSS | %85 | %96 | Context-aware |
Hardcoded Secrets | %95 | %99 | Entropy analizi |
Insecure Deserialization | %60 | %92 | Data flow analysis |
IDOR | %30 | %78 | Business logic understanding |
SSRF | %50 | %88 | URL pattern + context |
Güvenlik Tarama Örneği
// Nano Banana güvenlik taraması sonucu:
//
// CRITICAL: Hardcoded API Key detected
// File: NetworkManager.swift:42
// Code: let apiKey = "sk-proj-abc123..."
// Fix: Keychain veya environment variable kullanın
//
// WARNING: Insecure HTTP connection
// File: APIConfig.swift:15
// Code: let baseURL = "http://api.example.com"
// Fix: HTTPS kullanın, App Transport Security aktif edin
//
// INFO: Missing certificate pinning
// File: URLSessionConfig.swift:28
// Fix: SSL pinning implementasyonu ekleyin
💡 Pro Tip: Nano Banana'nın "secret scanning" özelliği, commit geçmişinde bile hardcoded secret'ları bulabiliyor. "Full scan" modunda tüm Git history'yi tarıyor ve geçmişte yanlışlıkla commit edilmiş API key'leri tespit ediyor.
iOS Security rehberimizde anlattığımız güvenlik katmanlarını Nano Banana ile otomatik denetlemek mümkün.
typescript
1// Nano Banana REST API ile programatik kod taraması2interface NanaBananaFinding {3 severity: 'critical' | 'warning' | 'info' | 'suggestion';4 file: string;5 line: number;6 message: string;7 fix?: string;8}9 10async function scanRepository(repoUrl: string, branch = 'main'): Promise { 11 const response = await fetch('https://api.nanobanana.dev/v1/scan', {12 method: 'POST',13 headers: {14 Authorization: `Bearer ${process.env.NANO_BANANA_API_KEY}`,15 'Content-Type': 'application/json',16 },17 body: JSON.stringify({18 repository: repoUrl,19 branch,20 languages: ['swift', 'typescript'],21 rules: { security: true, performance: true, style: false },22 }),23 });24 25 const { scan_id } = await response.json();26 27 // Scan sonucunu bekle (polling)28 let result;29 do {30 await new Promise((r) => setTimeout(r, 2000));31 const status = await fetch(`https://api.nanobanana.dev/v1/scan/${scan_id}`, {32 headers: { Authorization: `Bearer ${process.env.NANO_BANANA_API_KEY}` },33 });34 result = await status.json();35 } while (result.status === 'running');36 37 return result.findings as NanaBananaFinding[];38}Performans Analizi
Nano Banana, runtime performansını tahmin eden statik analiz yapabiliyor.
Performans Tespitleri
// Nano Banana performans analizi:
//
// WARNING: O(n²) complexity detected
// File: SearchManager.swift:67
// Code:
// for item in items {
// for other in items {
// if item.id == other.id { ... }
// }
// }
// Fix: Set veya Dictionary kullanarak O(n) yapın
//
// WARNING: Main thread blocking operation
// File: ImageLoader.swift:23
// Code: let data = try Data(contentsOf: url)
// Fix: async/await ile background thread'e taşıyın
//
// INFO: Unnecessary view re-render
// File: ProfileView.swift:45
// Code: @State var counter = 0 // body'de kullanılmıyor
// Fix: Gereksiz state kaldırın veya computed property yapın
Performans Skoru
Nano Banana her PR için bir "Performance Impact Score" hesaplıyor:
Skor | Anlamı | Aksiyon |
|---|---|---|
**A (90-100)** | Mükemmel | Sorun yok |
**B (75-89)** | İyi | Minor iyileştirmeler |
**C (60-74)** | Orta | Review gerekli |
**D (40-59)** | Kötü | Refactor önerilir |
**F (0-39)** | Kritik | PR bloklanmalı |
Desteklenen Diller ve Framework'ler
Dil/Framework | Destek Seviyesi | Özel Kurallar |
|---|---|---|
**Swift/SwiftUI** | Tam | Memory, concurrency, UIKit bridge |
**Kotlin/Compose** | Tam | Coroutines, Flow, Compose rules |
**TypeScript/React** | Tam | Hook rules, SSR, bundle size |
**Python** | Tam | Type hints, async, Django/FastAPI |
**Dart/Flutter** | İyi | Widget lifecycle, state management |
**Rust** | İyi | Ownership, lifetime, unsafe |
**Go** | İyi | Goroutine, channel, error handling |
**Java/Spring** | İyi | Bean lifecycle, JPA, security |
Rakiplerle Karşılaştırma
AI Kod Review Araçları Karşılaştırması
Özellik | Nano Banana | GitHub Copilot Review | CodeRabbit | Codacy |
|---|---|---|---|---|
**AI Model** | Multi-LLM | GPT-4o | Claude/GPT | Rule-based + AI |
**Bug Detection** | Çok iyi | İyi | Çok iyi | Orta |
**Security** | Çok iyi | İyi | İyi | Çok iyi |
**Performance** | Çok iyi | Orta | İyi | Orta |
**Custom Rules** | YAML + AI | Sınırlı | YAML | Evet |
**Self-host** | Evet | Hayır | Hayır | Evet |
**Fiyat (team)** | $15/user/ay | $19/user/ay | $12/user/ay | $15/user/ay |
**Free tier** | 500 PR/ay | Copilot gerekli | 200 PR/ay | Açık kaynak sınırsız |
💡 Pro Tip: Birden fazla AI review aracını aynı anda kullanmak mümkün. Nano Banana + GitHub Copilot Review kombinasyonu, tek başına birinden %30 daha fazla bug yakalıyor.
Daha fazla bilgi için Nano Banana Documentation, GitHub Marketplace ve Nano Banana Blog sayfalarını inceleyebilirsin.
ALTIN İPUCU
Bu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Easter Egg
Gizli bir bilgi buldun!
Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?
Okuyucu Ödülü
Sonuna kadar okuyan kahramana özel: Nano Banana'nın "Architecture Advisor" modülü, sadece bug değil mimari kararları da değerlendiriyor. PR'da yeni bir dependency eklediğinde, mevcut architecture ile uyumluluğunu kontrol ediyor ve "Bu dependency projenizin Massive View Controller anti-pattern'ine kaymasına neden olabilir" gibi yüksek seviye öneriler sunuyor. Bu modül beta'da ama .nanobanana.yml'de "experimental.architecture_advisor: true" ile aktif edilebilir. Detaylar için [Nano Banana Labs](https://labs.nanobanana.dev/) sayfasını incele.
Sonuç ve Öneriler
Nano Banana, AI destekli kod review'ın geleceğini temsil eden güçlü bir platform. Geleneksel static analysis araçlarının ötesine geçerek, semantik kod anlama ve proje bağlamı farkındalığı ile daha akıllı review'lar sunuyor.
Önerilerim:
- CI/CD'ye entegre et — Her PR otomatik review edilsin
- Custom rules yaz — Projenin coding standards'ını tanımla
- Learning Mode'u aç — Takımına özel kurallar öğrensin
- Security scan'i zorunlu kıl — Critical finding'lerde PR blokla
- Metriklerini takip et — Bug/PR oranını, review süresini ölç
iOS App Architecture ve CI/CD Pipeline yazılarımızda anlattığımız prensipleri Nano Banana ile otomatik denetlemek, kod kalitesini sürdürülebilir şekilde yüksek tutmanın en etkili yolu. WebSocket Real-Time uygulamalarındaki race condition ve concurrency bug'larını yakalamada Nano Banana özellikle başarılı.

