Linting
Kısaca
Linting, kaynak kodu çalıştırmadan otomatik olarak analiz edip olası hataları, stil sorunlarını ve şüpheli kalıpları kod yayına çıkmadan işaretleme işlemidir.
Linting nedir?
Linting, programı çalıştırmadan sorunları bulmak için kaynak kodunuz üzerinde linter adı verilen bir araç çalıştırmak demektir. Linter; kullanılmayan değişkenler, erişilemeyen kod, eksik bir await ya da neredeyse her zaman hata olan karşılaştırmalar gibi sorunları raporlar. Adı, C kodundaki şüpheli yapıları kontrol eden 1978 tarihli bir Unix aracı olan lintten gelir; araç, giysilerde biriken tüylerin adını almıştır.
Linter, kodu yapılandırılmış bir temsile ayrıştırır ve bir kural kümesine göre kontrol eder. Her kural açılıp kapatılabilir ve uyarı verecek ya da hata verecek şekilde ayarlanabilir; bu ayar genellikle depoya commit edilen bir yapılandırma dosyasında tutulur. Pek çok kural sorunları otomatik olarak düzeltebilir ve linter'lar genellikle siz yazarken editörde, pre-commit hook'larında ve CI/CD hattında çalışır.
Linting, kod için bir yazım ve dilbilgisi denetleyicisi gibidir: savunduğunuz fikrin doğru olup olmadığını söylemez, ama pek çok mekanik hatayı yakalar. Neredeyse her dil için linter'lar vardır ve ekipler bunları hataları erken yakalamak ve kod incelemesini hızlandıran tutarlı bir stili korumak için kullanır.
Linting sıklıkla biçimlendirme ve test ile karıştırılır. Biçimlendirici (formatter) yalnızca girinti ve satır sonları gibi düzeni yeniden yazar; linter ise şüpheli mantığa da bakar. Ayrıca testlerin aksine linter kodunuzu asla çalıştırmaz, bu yüzden programın doğru sonuçlar ürettiğini kanıtlayamaz.
Önemli noktalar
- Linter, kodu çalıştırmadan analiz eder.
- Olası hataları, riskli kalıpları ve stil tutarsızlıklarını işaretler.
- Kurallar yapılandırılabilir ve pek çok sorun otomatik olarak düzeltilebilir.
- Linter'lar editörlerde, pre-commit hook'larında ve CI/CD hatlarında çalışır.
- Linting testleri tamamlar; onların yerini almaz.
Örnek
function getTotal(items) {
const discount = 0.1; // warning: 'discount' is assigned but never used
let total = 0;
for (const item of items) {
if (item.price = 0) continue; // error: assignment inside a condition
total += item.price;
}
return total;
}Sık sorulan sorular
Linter ile formatter arasındaki fark nedir?
Formatter yalnızca boşluk, girinti ve satır uzunluğu gibi kodun görünümünü değiştirir. Linter ise kullanılmayan değişkenler ya da yanlışlıkla yapılan atamalar gibi olası hataları ve kötü uygulamaları arar; ancak bazı linter'lar stili de zorunlu kılabilir.
Linting ile statik analiz aynı şey midir?
Linting, kodu çalıştırmadan incelemek anlamına gelen statik analizin hafif bir biçimidir. Daha kapsamlı statik analiz araçları, örneğin güvenlik açıklarını bulmak için veriyi dosyalar arasında izleyerek daha da ileri gidebilir.
İlgili sayfalar
- Code ReviewSürüm Kontrolü, s. 4Code review, kod değişikliklerinin birleştirilmeden önce başka geliştiricilerce incelenmesidir; hataları yakalar, kaliteyi artırır, bilgi paylaşımını sağlar.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- Birim TestiTest ve Kalite, s. 4Birim testi, bir fonksiyonun, metodun ya da sınıfın programın geri kalanından yalıtılmış olarak doğru davrandığını doğrulayan küçük ve otomatik bir kontroldür.
- DerleyiciProgramlamanın Temelleri, s. 12Derleyici, bir programlama dilinde yazılmış kaynak kodu, bilgisayarın çalıştırabileceği makine kodu gibi daha alt seviyeli bir biçime çeviren programdır.
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- TypeScriptWeb Geliştirme, s. 51TypeScript, JavaScript üzerine statik tipler ekleyerek birçok hatayı kod çalışmadan yakalayan ve düz JavaScript'e derlenen bir programlama dilidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin