Java kodlarında kurumsal stil ve kalite denetimi
Checkstyle, Java projelerinde Google Java Style ve Sun kod kurallarına uyumu otomatik denetleyen, CI/CD boru hatlarına entegre edilebilen öncü bir statik analiz aracıdır.
Güncelleme
- 28 Eylül 2026: Yıldız 9.575 → 9.577, son sürüm checkstyle-14.3.0 (27 Eylül 2026).
- 27 Eylül 2026: Yıldız 9.288 → 9.575, son sürüm checkstyle-14.1.0 (30 Ağustos 2026).
Ne kazandırır?
- Kurumsal standartlara uyum: Google Java Style ve Sun Code Conventions şablonları ile ekip genelinde sıfır biçimlendirme tartışması.
- Soyut sözdizim ağacı (AST) analizi: Yalnızca metin araması değil, Java kodunun anlamsal gramer yapısını derinlemesine denetleyebilme.
- Zengin dahili kural kütüphanesi: İsimlendirme standartları, boşluk düzeni, iç içe blok derinliği, javadoc eksiklikleri ve karmaşıklık metrikleri.
- Derleme aracı ekosistemi: Maven (maven-checkstyle-plugin) ve Gradle eklentileri ile derleme adımında otomatik kalite kapısı.
- Özelleştirilebilir XML yapılandırması: Ekip gereksinimlerine göre kuralları esnetme, dışlama (suppression) ve uyarı/hata seviyelerini yönetme.
Kurulum
curl -sSL -O https://github.com/checkstyle/checkstyle/releases/download/checkstyle-10.18.0/checkstyle-10.18.0-all.jarÇalıştırma
java -jar checkstyle-10.18.0-all.jar -c /google_checks.xml src/
# veya Maven ile:
./mvnw checkstyle:checkKaynak: Resmî kaynak: https://github.com/checkstyle/checkstyle
Teknik mimari ve çalışma prensibi
Checkstyle, Java kaynak dosyalarını AST ağaçlarına dönüştürerek kural tabanlı gezinen bir denetim mimarisi kullanır:
- Java Parser ve ANTLR Altyapısı: ANTLR tabanlı gramer çözümleyici ile her sınıfı, metodu ve ifadeyi ağaç düğümlerine ayırır.
- Olay Tabanlı Ziyaretçi (Visitor) Deseni: Her kural denetleyicisi yalnızca ilgilendiği AST düğümlerine abone olarak yüksek performanslı tarama sağlar.
- SuppressionFilter ve Yorum İhlal İstisnaları: CHECKSTYLE:OFF etiketleri veya XML filtreleriyle belirli satır ve sınıfları denetim dışı bırakabilme.
Kural setleri ve CI/CD entegrasyonu
Checkstyle'ı yazılım geliştirme döngüsünün parçası haline getirmek kod kalitesini kalıcı olarak güvenceye alır:
- GitHub Actions ile Pull Request Kapısı: Her PR açıldığında checkstyle denetimini çalıştırarak standart dışı kodların ana dala girmesini engelleyin.
- IDE Entegrasyonu (IntelliJ & Eclipse): Geliştiricilerin kod yazarken gerçek zamanlı stil uyarıları almasını sağlayarak geri bildirim döngüsünü hızlandırın.
- HTML ve XML Raporları Üretimi: Kod tabanındaki teknik borcu ve stil ihlallerini grafik ve tablolar halinde raporlayarak arşivleyin.
Kod bilmiyorsanız
Mevcut bir Spring Boot projesinde Maven ile Checkstyle eklentisini nasıl yapılandıracağımı, Google Java Style kurallarını nasıl temel alacağımı ve ekip standartlarımıza göre satır uzunluğu sınırını 120 karaktere nasıl güncelleyeceğimi pom.xml ve checkstyle.xml örnekleriyle açıklar mısın?
Depo: https://github.com/checkstyle/checkstyle. Kurulum ve çalıştırmada bu deponun README dosyasındaki resmî talimatları esas al.
Başlamadan önce hangi işletim sisteminde çalıştığımızı ve gerekli araçların (ör. Python, Node.js, Git, Docker) kurulu olup olmadığını kontrol et; eksik olanları bu sisteme göre adım adım kur.
Çalışmak için yeni ve boş bir klasör oluştur. Bu klasörün dışındaki dosyalarıma dokunma, hiçbir şeyi silme. Her komutu çalıştırmadan önce ne yapacağını bir cümleyle söyle.
Her adımın sonunda ekranda ne görmem gerektiğini söyle. Bir hata oluşursa hata mesajını sana olduğu gibi yapıştıracağım, birlikte düzeltelim.
Sıkça sorulan sorular
- Checkstyle kodumu otomatik olarak düzeltir mi? Hayır. Checkstyle kurallara uymayan satırları tespit eden bir analiz aracıdır (linter). Otomatik kod yeniden biçimlendirme için Spotless veya google-java-format gibi araçlarla birlikte kullanılır.
- Google Java Style ile Sun standartları arasındaki fark nedir? Sun standartları 1999 yılındaki orijinal Java kurallarını (4 boşluk girinti, 80 karakter satır) temel alır. Google Java Style ise 2 boşluk girinti ve 100 karakter sınırıyla modern endüstriyel pratiği yansıtır.
- Checkstyle derlemeyi durdurabilir mi? Evet. Maven veya Gradle üzerinde failOnViolation veya maxAllowedViolations parametreleriyle stil hatası bulunan kodların derlenmesi engellenebilir.
- Büyük projelerde performansı nasıldır? Checkstyle soyut sözdizim ağacı (AST) üzerinde çalıştığı için yüz binlerce satırlık projeleri dahi saniyeler içinde tarayabilir.
Bağlantılar
TreScout bu aracı geliştirmedi · GitHub trendlerinde keşfedip Türkçe tanıttı. Tanıtım metni deponun kendi belgelerinden yapay zekâ ile hazırlandı. Bu sayfa deponun 2026-08-31 tarihindeki hâlini anlatır: Yıldız sayısı ve yazdığımız metin o güne aittir, depo sonrasında değişmiş olabilir. Güncel durum için depo bağlantısına bakın.