Tüm Yazılar
KategoriAI
Okuma Süresi
14 dk okuma
Yayın Tarihi
...
Kelime Sayısı
2.072kelime

Kahveni hazırla - bu içerikli bir makale!

Gemini Code Assist ile VS Code ve Android Studio entegrasyonu, akıllı kod tamamlama, kod inceleme, refactoring ve çoklu dosya düzenleme. AI kodlama rehberi.

Gemini Code Assist: AI Destekli Kodlama

# Gemini Code Assist: AI Destekli Kodlama

Kod yazarken en çok zaman kaybettiğin anlar hangileri? Büyük ihtimalle API dokümantasyonu aramak, boilerplate kod yazmak, test oluşturmak ve kod incelemek. Gemini Code Assist, Google'in AI destekli kodlama asistani olarak tam da bu noktalarda devreye giriyor. VS Code, Android Studio, JetBrains IDE'leri ve hatta terminal üzerinden çalışarak kodlama sürecini kökten değiştiriyor. Cursor AI IDE deneyimini ve Claude Code IDE entegrasyonunu zaten denediysen, Gemini'nin bu arenada nasıl farklılaştığını görmek isteyeceksin. Entegrasyon sürecinden çoklu dosya düzenlemesine, test oluşturmadan refactoring yeteneklerine kadar tum detayları burada keşfedeceksin.

Not: Bu rehber Gemini Code Assist'in en güncel versiyonunu (Subat 2026) kapsar. Enterprise ve bireysel kullanım arasindaki farklar belirtilmiştir.

İçindekiler


1. Gemini Code Assist Nedir?

Gemini Code Assist, Google'in Gemini AI modelini temel alan bir kod yazma asistanıdır. GitHub Copilot'a benzer şekilde IDE'nin içine entegre olur, ancak bazı önemli farklarla:

Temel Özellikler

Özellik
Açıklama
Kod Tamamlama
Satır ici ve çok satırlı otomatik öneri
Chat
IDE içinde sohbet ile soru-cevap
Kod Açıklama
Seçili kodu Türkçe/Ingilizce açıklama
Test Üretimi
Fonksiyon/sinif için otomatik test
Refactoring
Akıllı yeniden yapılandırma önerileri
Çoklu Dosya
Birden fazla dosyada koordineli değişiklik
Code Review
PR inceleme ve öneri
Customization
Organizasyon kod stiline uyum

Desteklenen IDE ve Diller

swift
1IDE Desteği:
2├-- VS Code (resmi extension)
3├-- Android Studio (dahili)
4├-- IntelliJ IDEA
5├-- PyCharm
6├-- WebStorm
7├-- GoLand
8└-- Cloud Shell Editor
9 
10Dil Desteği:
11├-- Python, JavaScript, TypeScript
12├-- Java, Kotlin, Dart (Flutter)
13├-- Swift, Objective-C
14├-- Go, Rust, C, C++
15├-- SQL, HTML, CSS
16└-- 20+ dil daha
💡 Pro Tip: Android Studio kullananlar için Gemini Code Assist zaten dahili olarak gelmektedir (2024.2+ sürümlerinde). Ayrıca extension yüklemenize gerek yok — Settings > Gemini'den aktif edin.

2. IDE Entegrasyonu

VS Code Kurulumu

bash
1# 1. Extension yükle
2# VS Code Extensions'dan "Gemini Code Assist" ara ve yükle
3 
4# 2. Google Cloud hesabi ile baglantı kur
5# Extension yüklendikten sonra "Sign in with Google" butonuna tikla
6 
7# 3. Proje ayarları (settings.json)
json
1{
2 "gemini.codeAssist.enabled": true,
3 "gemini.codeAssist.inlineSuggestions": true,
4 "gemini.codeAssist.chat.enabled": true,
5 "gemini.codeAssist.contextWindow": "workspace",
6 "gemini.codeAssist.language": "tr",
7 "gemini.codeAssist.model": "gemini-2.5-pro"
8}

Android Studio Entegrasyonu

swift
1Android Studio > Settings > Gemini
2├-- Enable Gemini: ✓
3├-- Code Completion: ✓
4├-- Smart Actions: ✓
5├-- Code Transformations: ✓
6└-- Context: Workspace (tum proje)

JetBrains IDE'leri

swift
11. File > Settings > Plugins
22. "Gemini Code Assist" ara ve yükle
33. Tools > Gemini ile aktif et
44. Google Cloud hesabi ile bağlan

3. Akıllı Kod Tamamlama

Gemini Code Assist'in kod tamamlama özelliği, sadece mevcut satır değil, tum dosya ve proje bağlamını anlayarak öneri sunar.

Satır Ici Tamamlama

swift
1// Yazmaya başla, Gemini tamamlasin
2class UserService {
3 private let networkManager: NetworkManager
4 
5 // "func" yazdığında Gemini su öneri sunar:
6 func fetchUser(id: String) async throws -> User {
7 let endpoint = Endpoint.user(id: id)
8 let data = try await networkManager.request(endpoint)
9 return try JSONDecoder().decode(User.self, from: data)
10 }
11 // Gemini, proje baglamindaki NetworkManager ve Endpoint
12 // tiplerini analiz ederek doğru öneri üretir
13}

Çok Satırlı Tamamlama

kotlin
1// Android projede Gemini'nin çok satırlı önerisi
2class MainViewModel @Inject constructor(
3 private val repository: UserRepository
4) : ViewModel() {
5 
6 // Gemini, Repository pattern'i algılayarak tum fonksiyonu oluşturur:
7 private val _uiState = MutableStateFlow<UiState>(UiState.Loading)
8 val uiState: StateFlow<UiState> = _uiState.asStateFlow()
9 
10 fun loadUsers() {
11 viewModelScope.launch {
12 _uiState.value = UiState.Loading
13 try {
14 val users = repository.getUsers()
15 _uiState.value = UiState.Success(users)
16 } catch (e: Exception) {
17 _uiState.value = UiState.Error(e.message ?: "Bilinmeyen hata")
18 }
19 }
20 }
21 
22 sealed interface UiState {
23 data object Loading : UiState
24 data class Success(val users: List<User>) : UiState
25 data class Error(val message: String) : UiState
26 }
27}

Bağlam Farkindaligi

Gemini Code Assist, sadece mevcut dosyayi değil, tum workspace'i anlayarak öneri sunar:

swift
1Bağlam Kaynakları:
2├-- Mevcut dosya (en yüksek öncelik)
3├-- Aynı klasordeki dosyalar
4├-- Import edilen moduller
5├-- Proje yapılandırması (tsconfig, Package.swift vb.)
6├-- Test dosyaları (pattern önceleme)
7└-- README ve dokümantasyon
💡 Pro Tip: Kod tamamlama kalitesini artır için dosyanın başına yorum ekle: // Bu dosya MVVM pattern'i ile UserService'i implement eder. Gemini bu yorum bağlamını kullanarak çok daha isabetli öneriler sunar.

4. Kod Inceleme ve Açıklama

Kod Açıklama

IDE içinde bir kodu seçip "Explain this code" dediğinde, Gemini detaylı bir açıklama sunar:

swift
1// Bu kodu seç ve "Explain" de:
2func debounce<T>(_ function: @escaping (T) -> Void,
3 delay: TimeInterval) -> (T) -> Void {
4 var timer: Timer?
5 return { value in
6 timer?.invalidate()
7 timer = Timer.scheduledTimer(withTimeInterval: delay, repeats: false) { _ in
8 function(value)
9 }
10 }
11}
12 
13// Gemini'nin açıkla:
14// "Bu fonksiyon bir 'debounce' mekanizması oluşturur.
15// Generic <T> tipi herhangi bir parametre tipini destekler.
16// Her çağırıldığında önceki timer iptal edilir ve yeni timer başlar.
17// Belirlenen 'delay' süresi geçtiğinde gerçek fonksiyon çalıştırılır.
18// Kullanım alanı: Arama cubugu input'u, scroll event'i gibi
19// sık tetiklenen olaylarda performans optimizasyonu sağlar."

PR Code Review

Gemini Code Assist, GitHub PR'larini inceleyerek otomatik yorum ve öneri sunabilir:

swift
1PR Review Yetenekleri:
2├-- Bug tespiti — potansiyel hatalar
3├-- Güvenlik — SQL injection, XSS, sensitive data
4├-- Performance — N+1 sorgu, gereksiz rendering
5├-- Best practices — naming, SOLID, DRY
6├-- Test kapsamı — eksik test senaryoları
7└-- Documentation — eksik yorumlar ve açıklamalar
typescript
1// Gemini'nin PR yorumu örneği:
2// 🔴 Bug: Bu fonksiyonda null check eksik.
3// user.email.toLowerCase() — eger user.email null ise crash olur.
4// Öneri: Optional chaining kullan: user.email?.toLowerCase() ?? ''
5 
6// ⚠️ Performance: Bu useEffect her render'da çalışıyor.
7// Dependency array bos bırakılmış ama fetchData fonksiyonu
8// component dışında veya useCallback ile sarilmali.
9 
10// 💡 Suggestion: Bu switch-case yerine bir Map kullanabilirsin.
11// Daha okunabilir ve genişletilebilir olur.

5. Çoklu Dosya Düzenleme

Gemini Code Assist'in en yeni ve güçlü özelliklerinden biri, birden fazla dosyada koordineli değişiklik yapabilmesidir.

Çoklu Dosya Senaryo

swift
1Görev: "UserService'e pagination desteği ekle"
2 
3Gemini'nin değiştirdiği dosyalar:
41. UserService.swift — fetchUsers(page:limit:) eklendi
52. UserRepository.swift — paginated query eklendi
63. UserViewModel.swift — loadMore() + isLoading state eklendi
74. UserListView.swift — infinite scroll + loading indicator
85. UserServiceTests.swift — pagination testleri eklendi

Diff Preview

Değişiklikleri uygulamadan önce Gemini bir diff gösterir:

diff
1// UserService.swift
2- func fetchUsers() async throws -> [User] {
3+ func fetchUsers(page: Int = 1, limit: Int = 20) async throws -> PaginatedResponse<User> {
4 let endpoint = Endpoint.users
5+ .queryItems([
6+ URLQueryItem(name: "page", value: String(page)),
7+ URLQueryItem(name: "limit", value: String(limit))
8+ ])
9 let data = try await networkManager.request(endpoint)
10- return try JSONDecoder().decode([User].self, from: data)
11+ return try JSONDecoder().decode(PaginatedResponse<User>.self, from: data)
12 }

6. Test Oluşturma

Gemini Code Assist, mevcut kodu analiz ederek kapsamlı test dosyaları üretir.

Otomatik Test Üretimi

swift
1// Kaynak kod:
2class Calculator {
3 func add(_ a: Double, _ b: Double) -> Double { a + b }
4 func divide(_ a: Double, _ b: Double) throws -> Double {
5 guard b != 0 else { throw CalculatorError.divisionByZero }
6 return a / b
7 }
8}
9 
10// Gemini'nin oluşturduğu testler:
11import XCTest
12@testable import MyApp
13 
14final class CalculatorTests: XCTestCase {
15 private var sut: Calculator!
16 
17 override func setUp() {
18 super.setUp()
19 sut = Calculator()
20 }
21 
22 override func tearDown() {
23 sut = nil
24 super.tearDown()
25 }
26 
27 func testAdd_positiveNumbers_returnsSum() {
28 XCTAssertEqual(sut.add(2, 3), 5)
29 }
30 
31 func testAdd_negativeNumbers_returnsSum() {
32 XCTAssertEqual(sut.add(-2, -3), -5)
33 }
34 
35 func testAdd_mixedNumbers_returnsSum() {
36 XCTAssertEqual(sut.add(-2, 3), 1)
37 }
38 
39 func testAdd_zeros_returnsZero() {
40 XCTAssertEqual(sut.add(0, 0), 0)
41 }
42 
43 func testDivide_validNumbers_returnsQuotient() throws {
44 XCTAssertEqual(try sut.divide(10, 2), 5)
45 }
46 
47 func testDivide_byZero_throwsError() {
48 XCTAssertThrowsError(try sut.divide(10, 0)) { error in
49 XCTAssertEqual(error as? CalculatorError, .divisionByZero)
50 }
51 }
52 
53 func testDivide_decimalResult_returnsAccurate() throws {
54 XCTAssertEqual(try sut.divide(7, 3), 2.333, accuracy: 0.001)
55 }
56}
💡 Pro Tip: Test oluşturma sırasında Gemini'ye "edge case'leri de ekle" veya "AAA (Arrange-Act-Assert) pattern'i kullan" gibi yonlendirmeler vererek test kalitesini artırabilirsin.

Swift Testing Framework yazımızda modern Swift test yaklaşımlarini detaylı ele aldık. Claude Code Hooks ile otomasyon yazımız da test otomasyonunu farklı bir aciyla ele alıyor.


7. Refactoring Yetenekleri

Akıllı Refactoring

swift
1// ONCE: Uzun ve karmaşık fonksiyon
2func processOrder(_ order: Order) {
3 // Validasyon
4 guard order.items.count > 0 else { return }
5 guard order.total > 0 else { return }
6 guard let customer = order.customer else { return }
7 
8 // Indirim hesaplama
9 var discount = 0.0
10 if customer.isPremium { discount += 0.1 }
11 if order.total > 500 { discount += 0.05 }
12 if order.items.count > 10 { discount += 0.03 }
13 
14 // Vergi hesaplama
15 let tax = order.total * 0.18
16 let finalTotal = order.total * (1 - discount) + tax
17 
18 // Kayit
19 database.save(order)
20 analytics.track("order_completed", ["total": finalTotal])
21 notificationService.send(to: customer, message: "Siparişini aldık!")
22}
23 
24// Gemini "Refactor this" → SONRA:
25func processOrder(_ order: Order) throws {
26 try validateOrder(order)
27 let discount = calculateDiscount(for: order)
28 let finalTotal = calculateFinalTotal(order.total, discount: discount)
29 try completeOrder(order, finalTotal: finalTotal)
30}
31 
32private func validateOrder(_ order: Order) throws {
33 guard !order.items.isEmpty else { throw OrderError.emptyCart }
34 guard order.total > 0 else { throw OrderError.invalidTotal }
35 guard order.customer != nil else { throw OrderError.noCustomer }
36}
37 
38private func calculateDiscount(for order: Order) -> Double {
39 var discount = 0.0
40 if order.customer?.isPremium == true { discount += 0.1 }
41 if order.total > 500 { discount += 0.05 }
42 if order.items.count > 10 { discount += 0.03 }
43 return discount
44}
45 
46private func calculateFinalTotal(_ subtotal: Double, discount: Double) -> Double {
47 let taxRate = 0.18
48 return subtotal * (1 - discount) * (1 + taxRate)
49}
50 
51private func completeOrder(_ order: Order, finalTotal: Double) throws {
52 try database.save(order)
53 analytics.track("order_completed", ["total": finalTotal])
54 notificationService.send(to: order.customer!, message: "Siparişini aldık!")
55}

8. Alternatif AI Asistanlarla Karşılaştırma

Özellik
Gemini Code Assist
GitHub Copilot
Cursor
Claude Code
IDE Desteği
VS Code, JetBrains, AS
VS Code, JetBrains
Cursor IDE
Terminal
Kod Tamamlama
Iyi
Çok iyi
Çok iyi
N/A
Chat
Evet
Evet
Evet
Evet
Çoklu Dosya
Evet
Sınırli
Evet
Mukemmel
Code Review
Evet
Evet
Sınırli
Evet
Otonom Çalışma
Sınırli
Sınırli
Orta
Tam
Context Penceresi
1M token
128K
200K
200K
Fiyat (bireysel)
Ücretsiz tier var
$10/ay
$20/ay
Kullanıma göre
Fiyat (enterprise)
$19/kullanıcı/ay
$39/kullanıcı/ay
Custom
Custom
Google Cloud
Native
Yok
Yok
Yok
💡 Pro Tip: Birden fazla AI asistani aynı anda kullanabilirsin. Gemini Code Assist satır ici tamamlama, Claude Code karmaşık görevler için ideal bir kombinasyon oluşturur.

Flutter Performance ve iOS App Launch yazılarinda performans optimizasyonu konularını detaylı ele aldık. ChatGPT Codex otonom kodlama ve n8n AI Agent yazılarinda da alternatif AI kodlama araçları inceleyebilirsin.


Sonuç ve Öneriler

Gemini Code Assist, özellikle Google ekosistemiyle çalışanlar için güçlü bir AI kodlama asistani. VS Code ve Android Studio entegrasyonu seamless, kod tamamlama kalitesi yüksek ve ücretsiz tier ile başlama imkani veriyor.

Temel çıkarımlar:

  1. Android Studio kullanıyorsan zaten dahili — aktif et ve kullan
  2. Kod tamamlama kalitesini artır için dosya başına yorum ekle
  3. PR review özelliğini CI/CD pipeline'ina entegre et
  4. Test oluşturma için AAA pattern yonlendirmesi ver
  5. Çoklu dosya değişikliklerinde diff preview'u mutlaka kontrol et

Resmi Kaynaklar:


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 Kahraman!** Tebrikler! İşte sana özel bir kaynak: Google'in [Gemini Code Assist quickstart](https://cloud.google.com/gemini/docs/codeassist/quickstart) rehberi. 5 dakikada kurulum yapip ilk öneri alabilirsin. Ayrıca Google Cloud'un ücretsiz $300 kredisini kullanarak enterprise özellik de deneyebilirsin.

Etiketler

#Gemini#Code Assist#AI#VS Code#Android Studio#Code Review#Developer Tools
Muhittin Çamdalı

Muhittin Çamdalı

Senior iOS Developer

12+ yıllık deneyime sahip iOS Developer. Swift, SwiftUI ve modern iOS mimarileri konusunda uzman. Apple platformlarında performanslı ve kullanıcı dostu uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.

Paylaş

İlgili İçerik