Summary

Bu yapay zeka kod denetleyici, yapıştırılan bir fonksiyonu veya dosyayı dört gerçek, kural tabanlı sinyale karşı tarar: 40 satırdan uzun fonksiyonlar, 4 seviyeden daha derin iç içe geçme, TODO/FIXME yoğunluğu ve JSON.parse, fetch gibi try/catch olmayan riskli çağrılar. Hangi noktaların düşürüldüğünü ve neden olduğunu gösteren 0-100 puan ve satır satır detay döndürür—tamamen tarayıcınızda. Hesap yok, yükleme yok, kara kutu AI puanlaması yok, sadece herhangi bir kıdemli mühendis tarafından göz ile çalıştırılacak dört kontrol.

Vibes Değil, Gerçek Riski Puanlandıran Bir Yapay Zeka Kod Denetleyici

Bir fonksiyonu veya dosyayı yapıştır. 0-100 puan al—dört kontrol tabanlı: bir kıdemli mühendis göz ile çalıştırırdı: fonksiyon uzunluğu, iç içe geçme derinliği, TODO birikintisi ve hata yönetimi. Tarayıcıda yaşayan olarak hesaplanır.

Mekanik bir klavyenin üzerinde çalışan geliştirici ve ikili monitörlerde açık bir pull request farkı

Yapay zeka kod denetleyici

Aşağıya bir fonksiyon veya bütün dosyayı yapıştır. Puan ve detaylar yazarken güncellenir.

0 satır · yerel olarak taranır, tarayıcından hiçbir şey çıkmaz
--
Taramak için kod yapıştır

Tamamen tarayıcıda çalışır. Hiçbir şey yüklenmez.

    Nasıl çalışır

    Dört kontrol, kara kutu yok

    Yapı: uzunluk ve iç içe geçme

    Fonksiyonlar 40 satırdan fazla olduğunda işaretlenir—ESLint'in kendi max-lines-per-function varsayılanı 50 ile bir miktar marjinle eşleşir. İç içe geçme derinliği, küme ayraçlı diller için ayraç sayılmasıyla veya Python tarzı kod için bir indent derinliği geri çekilişiyle izlenir ve 4 seviyeyi aşan derinlikte işaretlenir—çoğu stil rehberinin okunaksız bulduğu nokta.

    Hata yönetimi

    Tarayıcı, riskli çağrıları arar: JSON.parse, fetch, await, .then, execSync, requests., os.system. Sonra yapıştırılan kodda herhangi bir yerde try/catch olup olmadığını kontrol eder. Yakındaki koruması olmayan riskli çağrı, bedava pas değil bir puan kaybıdır.

    Housekeeping

    TODO, FIXME, XXX ve HACK işaretçileri sayılır ve kod satırı başına 100 satırla normalleştirilir. Bir dosyada bir veya iki tane normal mühendislik işlemdir. Bunların yoğun bir birikintisi, dosyanın gemilemeden önce bir geçiş gerektirmesinin bir sinyalidir, sonrasında değil.

    Neden bu dört kontrol, gerçek bir linter değil

    ESLint, pylint ve benzerleri bir soyut söz dizim ağacını ayrıştırır; bu yüzden kullanılmayan değişkenleri, ulaşılamayan dalları ve tür uyumsuzluklarını yakalayabilirler. Bu araç bunu yapmaz. İnsanları yalnızca tarayıcıda derleme adımı, yapılandırma dosyası ve kurulum olmadan yapıştırılan bir snippet üzerinde çalıştırabilecekleri bir metin tarayıcısıdır—bir fonksiyonu bitirmek ile pull request açmak arasındaki on saniye için faydalı. Ödünleşim dürüsttür: daha az, daha kaba kontroller, şeffaf şekilde hesaplanır, gerçek bir statik analizin daha derin ama daha yavaş kurulumu. Bir takım zaten ESLint veya pylint'i CI'de çalıştırıyorsa, çalıştırmaya devam edin. Bu araç, kod henüz bir repo'da değilken o öncesi boşluğu doldurmak içindir.

    Puanla ilgili sorular

    Bu yapay zeka kod denetleyici gerçekten ücretsiz mi?
    Evet. Tamamen tarayıcıda hiçbir kaydolma, API anahtarı ve kullanım sınırı olmadan çalışır. Puanlamada sunucu olmadığından, ölçülecek veya faturalanacak hiçbir şey yok.
    Kodum herhangi bir yere yükleniyor mu?
    Hayır. Tarama, sekmenizde düz JavaScript olarak çalışır, textarea'da oturan metne karşı. Hiçbir şey sunucuya gönderilmez, depolanmaz veya kaydedilmez—sadece widget'ın kullanıldığını görmek için kullanılan, kod içeriği olmayan anonim bir araç çalışma etkinliği.
    Burada yapay zeka kod denetleyici ne sayılır, gerçek bir linter'a kıyasla?
    Bu, bir derleyici veya ESLint veya pylint gibi bir linter değil heuristik bir tarayıcıdır. Bir AST ayrıştırmez, bu yüzden tür hatalarını, kullanılmayan değişkenleri veya ölü kod yollarını yakalayamaz. Bunun yerine dört yapısal deseni işaretler: uzun fonksiyonlar, derin iç içe geçme, TODO yoğunluğu ve try/catch olmayan riskli çağrılar.
    Hangi diller ile çalışıyor?
    Küme ayraçlı her şey iyi çalışır: JavaScript, TypeScript, Java, C, C#, Go, Rust, PHP, Swift. İç içe geçme, eşleştirilen ayraçlar sayılarak ölçülür. Sadece girintili Python gibi diller bunun yerine bir girinti derinliği kontrolüne geri çekilir. Karışık sekmeler ve boşluklar veya alışılmadık biçimlendirme, her iki şekilde de iç içe geçme sayısını atabilir.
    Temiz olduğunu düşündüğüm bir fonksiyon neden işaretlendi?
    Genellikle iki şeyden biri: yapıştırılan snippet'te herhangi bir yerde JSON.parse, fetch veya await çağrısı try/catch olmadan, veya bloğun bir yerinde 4 seviyeyi aşan iç içe geçme. Daha fazla içerik yapıştır, varsa çevreleyen try bloğu da dahil et, puan yazarken canlı olarak güncellenir.
    Eşikler (40 satır, derinlik 4, vb.) nereden geliyor?
    Gerçek linter yapılandırmalarında ortak varsayılanları takip ederler: ESLint'in max-lines-per-function kuralı varsayılan olarak 50 satıra gider ve çoğu iç stil rehberi 3 ila 4 seviyeyi aşan iç içe geçmeyi okunabilirlik sorunu olarak işaretler. Bizimkiler bu varsayılanların biraz altında, katı tarafta, çünkü tam AST ayrıştırması olmayan bir tarayıcı gerçek bir linter'dan daha geniş bir güvenlik marjına ihtiyaç duyar.
    Bu bir kod review'i yerine geçebilir mi?
    Hayır ve bunu denememelidir. Bu, review'er değil pull request açmadan önce beş saniyelik bir içgüdü kontrolüdür. Yapısal kokular yakalar, mantık hatalarını, güvenlik sorunlarını veya altı ay sonra anlamlı olan mimari sorunları değil. Bunu review yerine değil review'den önce kullan.
    Puanım 100 ama kod yine de karışık hissettiriyor. Araç mı yanlış?
    Dört spesifik şeyi kontrol ediyor, genel kod kalitesini değil. 100, uzun fonksiyon yok, derin iç içe geçme yok, TODO birikintisi yok ve korumasız riskli çağrı yok demektir. Bu, adlandırmanın iyi olduğu, testlerin varolduğu veya mimarinin altı ay sonra anlamlı olduğu anlamına gelmez.
    Kısmi bir snippet yapıştırmak puanı çarpıtıyor mu?
    Evet ve bu beklenmektedir. Try/catch olmadan bir fonksiyon gövdesi yapıştırırsanız, bu koruma dosyanın başka yerinde bulunursa, kontrol bunun varolduğunu bilmemesi için hiçbir yolu yok. Doğru bir okuma için, en küçük kendi içinde yeterli birim yapıştır: bir fonksiyon veya bir dosya.

    Bu yapıyı kontrol eder. CodebaseChat daha zor soruya cevap verir.

    Codebase'ize düz dil ile soru sor: auth nereye bağlı, bir fonksiyon neden var, repo'lar arasında ne çağırıyor. Grep gerekli değil.