- 470 açık kaynak PR’ın analizine göre, yapay zeka tarafından yazılan kodlar, insanlar tarafından yazılan kodlara kıyasla ortalama 1,7 kat daha fazla sorun içeriyor
- Mantık hataları, okunabilirlik düşüşü ve güvenlik açıkları gibi başlıca kusurlar yapay zeka kodunda belirgin biçimde daha fazlaydı; özellikle okunabilirlik sorunları 3 katın üzerinde arttı
- Yapay zeka kodunda eksik hata işleme, eşzamanlılık hataları ve adlandırma tutarsızlıkları sık görülüyor; bu da inceleme yükünü ve operasyonel riski artırıyor
- Nedenler arasında iş mantığını yeterince anlayamama, yüzeysel doğruluğa odaklanma ve verimsiz kalıpları tercih etme gösteriliyor
- Rapor, yapay zeka kodu için kalite yönetimi sistemlerinin güçlendirilmesi ve yapay zeka farkındalıklı kod inceleme, güvenlik ve test süreçlerinin devreye alınması gerektiğini vurguluyor
AI vs Human Code Generation Report özeti
- CodeRabbit, yapay zeka ile insanlar tarafından yazılan kodların kalite farkını ampirik olarak analiz etmek için bir araştırma yürüttü
- 470 açık kaynak GitHub PR’ı incelendi; bunların 320’si yapay zeka ortak yazımı, 150’si yalnızca insan yazımıydı
- Tüm sonuçlar 100 PR başına düşen issue sayısı ile normalize edildi ve istatistiksel oran karşılaştırmaları üzerinden sorun türlerine göre görülme sıklığı ölçüldü
- Sonuç olarak, yapay zeka üretkenliği artırsa da hata oranını da yükseltiyor
- Yapay zeka tarafından yazılan PR başına ortalama 10,83 sorun, insan yazımı PR’larda ise 6,45 sorun bulundu
- Özellikle yüksek ciddiyetli hatalar yapay zeka kodunda daha sık tespit edildi
Araştırmanın sınırlamaları
- Kodun gerçekten yapay zeka tarafından yazılıp yazılmadığı doğrudan doğrulanamadığı için, AI ortak yazım sinyali (co-authored-by) bulunan PR’lar yapay zeka yazımı olarak sınıflandırıldı
- Bu işaretin olmadığı PR’lar insan yazımı kabul edildi, ancak tam ayrım yapmak mümkün değildi
- Bu sınırlamaya rağmen iki grup arasındaki sorun örüntülerindeki istatistiksel farklar anlamlı biçimde ortaya çıktı
- Tüm metodoloji raporun sonunda paylaşılıyor
Başlıca 10 bulgu
- Her hata türü yalnızca yapay zekaya özgü değil, ancak kategorilerin çoğunda yapay zeka kodunun hata oranı daha yüksek
- İnsanlar da yapay zeka da benzer türde hatalar yapıyor, ancak yapay zeka bunları daha sık ve daha büyük ölçekte üretiyor
-
1. Toplam issue sayısı 1,7 kat arttı
- Yapay zeka yazımı PR başına ortalama 10,83, insan yazımı PR’larda 6,45 issue görüldü
- Sorunların yoğunlaştığı PR’lar (outlier) yapay zeka kodunda çok daha fazla; bu da inceleme yükünü artırıyor
-
2. Yüksek ciddiyetli hatalar arttı
- Önemli ve kritik sorunlar 1,4 ila 1,7 kat daha fazla görüldü
-
3. Mantık ve doğruluk sorunları %75 arttı
- İş mantığı hataları, yanlış bağımlılıklar, kontrol akışı kusurları ve yapılandırma hataları buna dahil
- Düzeltme maliyeti yüksek ve operasyonel arızalara yol açma olasılığı büyük
-
4. Okunabilirlik sorunları 3 katın üzerinde arttı
- Adlandırma kuralları, kod yapısı ve ifade tutarlılığı belirgin şekilde daha zayıf
- Kod dışarıdan düzenli görünse de yerel kalıp ihlalleri sık yaşanıyor
-
5. Hata işleme ve istisna yollarının atlanması 2 kat arttı
- null kontrolleri, guard koşulları ve istisna işleme mantığı sık sık eksik kalıyor
- Bu, doğrudan gerçek servis kesintilerine bağlanabilen bir sorun türü
-
6. Güvenlik sorunları en fazla 2,74 kat arttı
- Parola işlemenin uygunsuz yapılması ve nesne referansı açıkları öne çıkan örnekler arasında
- Bunlar yapay zekaya özgü açıklar değil, ancak güvenlik kusurlarının çoğu daha da büyüyor
-
7. Performans düşüşü sorunları daha az, ama yapay zeka tarafında yoğunlaşıyor
- Aşırı I/O çağrısı yaklaşık 8 kat daha fazla
- Yapay zekanın açıklık odaklı kodu tercih etmesi verimliliği düşürüyor
-
8. Eşzamanlılık ve bağımlılık hataları yaklaşık 2 kat arttı
- Sıralama hataları, yanlış bağımlılık akışları ve eşzamanlılık denetiminin yanlış kullanımı sık görülüyor
-
9. Biçimlendirme sorunları 2,66 kat arttı
- Girinti, boşluk ve stil tutarsızlıkları gibi biçimsel hatalar daha fazla
- Otomatik formatter ve linter kullanılsa bile yapay zeka kodunda gürültü artıyor
-
10. Adlandırma tutarsızlıkları 2 kat arttı
- Belirsiz adlar, terim tutarsızlıkları ve genel amaçlı tanımlayıcıların kullanımı daha yaygın; bu da inceleyenin bilişsel yükünü artırıyor
Sorunların nedenleri
- Yapay zeka iş mantığını yeterince anlayamıyor
- İstatistiksel kalıplara dayalı kod ürettiği için sistem kurallarını gözden kaçırabiliyor
- Yüzeysel doğruluğa odaklı üretim
- Kod dışarıdan doğru görünse de kontrol akışı korumaları veya bağımlılık sırası hataları içerebiliyor
- Depoya özgü teamüllere uyulmaması
- Adlandırma, yapı ve biçim kuralları genelleştirilmiş bir biçime dönüşüyor
- Güvenlik kalıplarının zayıflaması
- Açık talimat verilmezse eski veya zayıf kod kalıpları yeniden üretilebiliyor
- Verimlilik yerine sadeliğin tercih edilmesi
- Tekrarlanan I/O ve optimize edilmemiş yapılar kullanma eğilimi var
Mühendislik ekipleri için alınabilecek önlemler
- Yapay zeka kullanımı yalnızca hız artışı değil, aynı zamanda kalite güvence sisteminin yeniden tasarlanmasını gerektiriyor
-
1. Yapay zekaya yeterli bağlam sağlamak
- İş kuralları, yapılandırma kalıpları ve mimari kısıtlar açıkça belirtilirse hata oranı azalabilir
- Prompt içine depoya özel yönergeler ve şemalar dahil edilmeli
-
2. Politika tabanlı kod stilini zorunlu kılmak
- CI formatter, linter ve stil kılavuzları ile okunabilirlik sorunları önlenebilir
-
3. Doğruluk için ek güvenlik önlemleri eklemek
- Testleri zorunlu kılmak, null/type kontrolleri, istisna işleme standardizasyonu ve guard koşullarını açıkça belirtmek
-
4. Güvenli varsayılanları güçlendirmek
- Kimlik bilgilerinin merkezileştirilmesi, parolanın doğrudan kullanımının engellenmesi, otomatik SAST ve güvenlik linter’larının çalıştırılması
-
5. Verimli kalıpları teşvik etmek
- I/O işlemlerini toplu yürütme, uygun veri yapısı seçimi ve performans ipuçları sağlama
-
6. Yapay zeka farkındalıklı PR kontrol listesi uygulamak
- İnceleme sırasında şu maddeler kontrol edilmeli:
- Hata yolları kapsanıyor mu
- Eşzamanlılık denetimi doğru mu
- Yapılandırma değerleri doğrulanıyor mu
- Parola işleme yöntemi uygun mu
-
7. Yapay zeka kod incelemesini otomatikleştirmek
- Artan inceleme yorgunluğunun hata kaçırmaya yol açmaması için AI kod inceleme aracı (CodeRabbit) kullanılması öneriliyor
- İnceleme kalitesini standartlaştırabilir ve inceleme süresiyle bilişsel yükü azaltabilir
Sonuç
- Yapay zeka kodlama araçları güçlü bir hızlandırıcı, ancak koruma önlemleri olmadan yapılan hızlanma riskli
- Yapay zeka tarafından üretilen kodda değişkenlik, hata oranı ve ciddiyet seviyesi daha yüksek
- Yapay zekayı ikame değil tamamlayıcı bir araç olarak kullanmak ve kalite, güvenlik, test sistemlerini güçlendirmek şart
- Hız ve kaliteyi birlikte sağlamak için bilinçli mühendislik yönetimi gerekiyor
- Yapay zeka kod inceleme araçlarının kullanımı, kaliteyi korumada somut fayda sağlayabilir
5 yorum
1,7 kat ise düşündüğümden daha az...?
Ben de yapay zeka ile kod yazarken benzer şeyler hissettim. Derlenmiş nedenlere bakınca, insanların kod yazarken temel bilgi olarak benimsediği pattern'ler, adlandırma kuralları, edge case ele alma biçimleri, guard condition'lar gibi unsurların bağlam olarak yeterince sağlanmamasından kaynaklandığını düşünüyorum.
Bu yüzden ben bunları bir araya toplayan bir kural dosyası oluşturdum ve kod yazarken o dosyayı mutlaka okuyup kurallara uyması talimatını veriyorum. Böyle olunca sadece kural dosyasını iyileştirerek bile ortaya çıkan sonuçlar ciddi ölçüde daha iyi oluyor.
"Bir sürü üretildi ama 1,7 kat ise bedava sayılmaz mı" diye bir görüş çıkar diye korkuyorum...
"Ama hızlıydı, değil mi?" memi aklıma geliyor haha
Hacker News görüşleri
Bence AI'dan önce de var olan bir “vibe coding” vardı
Vibe coding eleştirisi haklı ama aslında AI'dan önce de kod kalitesi berbattı
“AI kodu 1,7 kat daha fazla sorun üretiyor” sözü aslında sadece tespit edilen bug sayısı demek
Kısa süre önce .NET'te IComparable implementasyonu için Copilot bir öneri verdi ve birkaç dakikamı kurtardı
Eskiden de benzer bir durum vardı
LLM tabanlı bir şirketin “AI düşünüldüğü kadar kötü değil” demesi ilginçti
Ben CodeRabbit'i sık kullanıyorum ama hâlâ çok fazla false positive var
“1,7 kat daha fazla” ile “1,7 kat arttı” aynı şey değil
Agentic AI coding sadece bir araç; yanlış kullanırsan doğal olarak yanlış sonuç üretir
Yazı başlığındaki “AI kodu 1,7 kat daha fazla sorun üretiyor” ifadesi doğru değil