13

CLI

Her bayrak, çıktı biçimleri, çıkış kodları, CI ve pre-commit entegrasyonu

3 dk okuma8 bölüm

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

text
cleanlens [path] [options]

path analiz edilecek depodur (varsayılan: geçerli dizin). Yalnızca bir yola izin verilir.

Seçenekler

SeçenekArgümanAçıklama
--jsonRaporun tamamını JSON olarak yazdır (bkz. 14 — Rapor şeması)
--markdownİngilizce tam bir Markdown raporu yazdır
--violationsMetin modu: her ihlali de listele
--presetjavascript | react | python | django.clean-code-tracker.json (ve yerel geçersiz kılma) yerine yerleşik bir ön ayar kullan
--max-commitstam sayı ≥ 0Yalnızca en yeni N commit'i yeniden oynat (varsayılan 500; 0 = tümü)
--full-historyTüm geçmişi yeniden oynat (--max-commits 0 ile aynı)
--sincetarihYalnızca bu tarihten sonraki commit'leri yeniden oynat (herhangi bir git log --since değeri)
--no-cacheCommit başına önbelleği okuma veya yazma
--fail-onlow | medium | high | criticalHerhangi bir ihlal bu önem derecesinde veya üstündeyse 1 koduyla çık
-h, --helpYardı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)

text
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ü.
  • --violations ile 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:

  1. Özet tablosu (oluşturulma zamanı, motor, dosyalar, commit'ler, ihlaller, atanamayanlar, geliştiriciler).
  2. Puan formülü ve önem ağırlıkları.
  3. Severity breakdown (önem başına sayı, ağırlık, ağırlıklı puan).
  4. Attribution status sayıları.
  5. 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ı).
  6. Files with violations: dosya başına sayı, önem dereceleri ve satır numaraları (ilk 40, sonra "+N more").
  7. 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
stdoutYalnızca rapor; böylece > file temiz bir dosya verir
stderrUyarılar (warning: …), ilerleme (yalnızca TTY'de, yerinde üzerine yazılır), hatalar ve --fail-on başarısızlık mesajı

Çıkış kodları

KodAnlamı
0Başarılı ve --fail-on kapısı (varsa) geçti
1--fail-on eşikte veya üstünde bir ihlal buldu
2Kullanı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

bash
# 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 50

CI entegrasyonu

GitHub Actions

yaml
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 critical

Notlar:

  • 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ı

sh
#!/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.