İçeriğe geç

Dosyaya bağlı hafıza

git blame bir satırı kimin değiştirdiğini söyler. Linter şu an neyin yanlış olduğunu söyler. Bu dosyaya en son dokunulduğunda ne olduğunu ve ne yapıldığını yalnızca bee söyleyebilir.

Terminal window
bee remember "** sınırı sessizce düştü, bu yüzden **/foo.cs, notfoo.cs ile eşleşti" \
--type error \
--solution "sınırı koru: (?:.*/)? — .* değil" \
--prevention "negatif test yaz — eşleşmeMEsi gereken bir desen" \
--path 'src/Bee/Hooks/*.cs'

Bundan sonra eşleşen bir dosyayı değiştirmek üzere olan herkes bunu görür:

Terminal window
bee lint src/Bee/Hooks/PathGlob.cs
# bee — known about src/Bee/Hooks/PathGlob.cs
# - [error] ** sınırı sessizce düştü, bu yüzden **/foo.cs, notfoo.cs ile eşleşti
# ↳ fix: sınırı koru: (?:.*/)? — .* değil
# ↳ avoid: negatif test yaz — eşleşmeMEsi gereken bir desen
# ↳ matched: src/Bee/Hooks/*.cs

--path tekrarlanabilir ve kurallarla aynı glob notasyonunu kullanır — aslında aynı eşleştiriciyi, çünkü bir glob’un ne anlama geldiğine karar veren iki merci, birden fazladır.

dosyaya bağlı hafıza
eşleşen dosyada bee lint ✅ gelir
başka herhangi bir dosyada bee lint — sessiz
yazma öncesi hook ✅ gelir
oturum başı gelmez
her prompt gelmez
bee remember search ✅ hâlâ bulunur

İki yokluk, özelliğin kendisidir. Dosyaya bağlı bir hafıza, o dosyaya dokunulmayan turlarda hiçbir şey tutmaz — yukarıdaki örnek için ölçüldü: ~37 token, ve yalnızca o yol adı geçtiğinde.

Sınır devreye girdiğinde düşen şey en az acil olan olmalı. Bir dosyayı değiştirmek üzere olan kişinin “geçen sefer bu bozuldu” bilgisine, “şöyle bir kural var”dan daha çok ihtiyacı vardır; bu yüzden error hafızaları öne sıralanır. Komut en fazla 5 tanesini gösterir; yazma öncesi hook 3 alır, çünkü iki saniyelik bütçede kuralların yanında yol alır.

Terminal window
bee lint --memory 0 # tamamen atla
bee lint --memory 10 # ya da daha fazlasını iste

Blok kendi başlığı altında, kurallardan ayrı basılır — ve bu kozmetik değildir.

Kural, uyulacak bir talimattır. Hafıza, geçmiş hakkında bir olgudur. Tek listede basıldığında model ikisine aynı davranır — ve bir hatayı tarif eden bir error hafızasına uymak, o hatayı yeniden üretmek demektir. Farklı başlık, farklı fiil.

Çözüm ve önlem sorunla birlikte taşınır, çünkü “bu bir kez bozuldu” bilgisi “ve şu düzeltti” olmadan kimsenin harekete geçemeyeceği bir uyarıdır.

Aksi hâlde yeniden keşfedilecek olanı bağlayın:

Terminal window
# belirli bir dosyadaki tuzak
bee remember "AppKit audit alanlarını damgalamıyor — CreatedAt'i initializer'da ver" \
--type error --solution "= DateTimeOffset.UtcNow, property üzerinde" \
--path '**/Entities/*.cs'
# bir dizini yöneten karar
bee remember "bu katman CQRS yazma tarafı; okumalar projeksiyondan geçer" \
--type decision --reason "okuma modelinin tutarlılık sözleşmesi farklı" \
--path 'src/Orders/Commands/**'

Her yerde doğru olanı bağlamayın — o bir kuraldır ya da sıradan bir hafıza. Bağlama, yalnızca burada önemli olan için vardır.