CLI
Her bayrak, çıktı biçimleri, çıkış kodları, CI ve pre-commit entegrasyonu
cleanlens komutu eklentiyle aynı motoru çalıştırır ve raporu yazdırır. Kod: src/cli/index.ts ve src/cli/format.ts.
Kullanım
cleanlens [path] [options]path analiz edilecek depodur (varsayılan: geçerli dizin). Yalnızca bir yola izin verilir.
Seçenekler
| Seçenek | Argüman | Açıklama |
|---|---|---|
--json | Raporun tamamını JSON olarak yazdır (bkz. 14 — Rapor şeması) | |
--markdown | İngilizce tam bir Markdown raporu yazdır | |
--violations | Metin modu: her ihlali de listele | |
--preset | javascript | react | python | django | .clean-code-tracker.json (ve yerel geçersiz kılma) yerine yerleşik bir ön ayar kullan |
--max-commits | tam sayı ≥ 0 | Yalnızca en yeni N commit'i yeniden oynat (varsayılan 500; 0 = tümü) |
--full-history | Tüm geçmişi yeniden oynat (--max-commits 0 ile aynı) | |
--since | tarih | Yalnızca bu tarihten sonraki commit'leri yeniden oynat (herhangi bir git log --since değeri) |
--no-cache | Commit başına önbelleği okuma veya yazma | |
--fail-on | low | medium | high | critical | Herhangi bir ihlal bu önem derecesinde veya üstündeyse 1 koduyla çık |
-h, --help | Yardımı göster |
Hem --json hem --markdown verilirse --json kazanır. Bilinmeyen seçenekler ve geçersiz değerler bir hata ile yardım metnini yazdırır ve 2 koduyla çıkar.
Çıktı biçimleri
Metin (varsayılan)
Developers: 3
Analyzed files: 84
Analyzed commits: 500
Total violations: 212
Unattributed: 0
Alice
Clean Code Score: 78/100
duplication 88 · structure 70 · hygiene 82
Analyzed Lines: 12,400
Confidence: Highly reliable
Contribution: 61%
New Violations: 64
Fixed Violations: 21
Existing Violations: 30 (informational)
Unattributed Violations: 0 (informational)
Weighted Violations: 190
Net Quality Impact: +120
Violation Density: 15.32 / KLOC
Active days: 88
Not ranked (insufficient analysed code)
Bob
Clean Code Score: 71/100
...- Önce sıralanan geliştiriciler, puana göre en düşükten başlayarak (en çok yardıma ihtiyacı olan en üstte), ardından bir "Not ranked" bölümü.
--violationsile ardından bir liste gelir:[high] Deep nesting — src/app.ts:120 (introduced/high; Alice).
Markdown (--markdown)
CI artifact'ı veya PR yorumu olarak uygun, kendi içinde eksiksiz bir rapor:
- Özet tablosu (oluşturulma zamanı, motor, dosyalar, commit'ler, ihlaller, atanamayanlar, geliştiriciler).
- Puan formülü ve önem ağırlıkları.
- Severity breakdown (önem başına sayı, ağırlık, ağırlıklı puan).
- Attribution status sayıları.
- Developers: her biri için bir metrik tablosu içeren bir bölüm (yoğunlukla alt puanlar, katkı, yeni/düzeltilen/mevcut/atanamayan, ağırlıklı, net etki, yoğunluk, e-postalar, aktif günler, ilk/son katkı).
- Files with violations: dosya başına sayı, önem dereceleri ve satır numaraları (ilk 40, sonra "+N more").
- All violations: önem, kural, dosya:satır, durum, güven, ekleyen, mesaj.
JSON (--json)
Biçimlendirilmiş tam ProjectReport. Panolar, çalıştırmalar arası karşılaştırmalar veya kendi araçlarınız için kullanın.
Çıktı akışları
| Akış | İçerik |
|---|---|
| stdout | Yalnızca rapor; böylece > file temiz bir dosya verir |
| stderr | Uyarılar (warning: …), ilerleme (yalnızca TTY'de, yerinde üzerine yazılır), hatalar ve --fail-on başarısızlık mesajı |
Çıkış kodları
| Kod | Anlamı |
|---|---|
0 | Başarılı ve --fail-on kapısı (varsa) geçti |
1 | --fail-on eşikte veya üstünde bir ihlal buldu |
2 | Kullanım hatası (hatalı seçenek), beklenen analiz hatası (depo değil, commit yok, geçersiz yapılandırma) veya beklenmeyen bir çökme |
--fail-on, atama durumu ne olursa olsun mevcut koddaki her ihlale bakar. Önem sırası: critical > high > medium > low; bu yüzden --fail-on medium medium, high veya critical durumunda başarısız olur.
Önbellek
CLI commit başına sonuçları <os.tmpdir()>/cleanlens-cache/ içinde önbelleğe alır. Temiz ve tekrarlanabilir bir çalıştırma için --no-cache kullanın. Bkz. 09 — Önbellek ve performans.
Örnekler
# Geçerli depo için okunabilir rapor
cleanlens
# Başka bir depo, ihlal listesiyle
cleanlens ../api --violations
# Yapılandırma dosyası yerine Django ön ayarı, high ve üstünde başarısız ol
cleanlens --preset django --fail-on high
# Tüm geçmiş, JSON olarak
cleanlens --full-history --json > report.json
# Yalnızca son çeyrek, Markdown olarak
cleanlens --since "3 months ago" --markdown > q3.md
# Son çalışmanın hızlı kontrolü
cleanlens --max-commits 50CI entegrasyonu
GitHub Actions
name: Clean Code
on: [pull_request]
jobs:
cleanlens:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # full history: attribution needs commits
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npx cleanlens --markdown > cleanlens-report.md
- uses: actions/upload-artifact@v4
with:
name: cleanlens-report
path: cleanlens-report.md
- run: npx cleanlens --fail-on criticalNotlar:
fetch-depth: 0önemlidir. Varsayılan sığ klonda tek commit vardır; atanacak neredeyse hiçbir şey olmaz.- Kapı adımı işi 1 koduyla başarısız kılar; ondan önceki rapor adımı yine de artifact'ı üretir.
- CLI sizin ortamınızda npm'e yayınlanmamışsa bu depodan derleyin ve
node dist/cli.jsçalıştırın.
Pre-commit kancası
#!/bin/sh
# .git/hooks/pre-commit (chmod +x)
cleanlens --max-commits 20 --fail-on critical || {
echo "CleanLens: critical violations found (e.g. a hard-coded secret)."
exit 1
}Bu, yalnızca hazırlanmış (staged) değişiklikleri değil, çalışma ağacını denetler. Kancanın yalnızca gizli bilgiler gibi ciddi sorunları engellemesi için eşiği critical tutun.
Kaliteyi zaman içinde izlemek
--json raporlarını her sürüm veya her hafta için kaydedin ve cleanCodeScore, totalViolations ile geliştirici başına breakdown.netQualityImpact değerlerini karşılaştırın. Karşılaştırdığınız çalıştırmalar arasında yapılandırmayı değiştirmeyin.