14

Rapor şeması

--json ile üretilen JSON ProjectReport, alan alan

3 dk okuma5 bölüm

cleanlens --json bir ProjectReport yazdırır. Tipler src/types/index.ts içinde tanımlıdır. Bu doküman her alanı açıklar.

ProjectReport

AlanTipAçıklama
schemaVersionsayıcommit-diff motoru için 2
generatedAtstring (ISO 8601)Raporun oluşturulma zamanı
engine"commit-diff"Kullanılan atama motoru ("head-blame" eskisiydi)
analysisConfigHashstringKurallar + hariç tutmalar + puanlamanın hash'i (aynı zamanda önbellek anahtarı); eşit hash'ler karşılaştırılabilir raporlar demektir
developerCountsayıKimlik birleştirmeden sonraki geliştirici sayısı
totalViolationssayıMevcut koddaki ihlaller
unattributedViolationssayıDosyası okunamayan ihlaller
analyzedFilessayıHEAD taramasında analiz edilen dosyalar
analyzedCommitssayıYeniden oynatılan commit'ler
developersDeveloper[]Aşağıya bakın
violationsViolation[]Aşağıya bakın; önem derecesine, sonra yola, sonra satıra göre sıralı

Developer

AlanTipAçıklama
idstringCommit sayısına göre dev-1, dev-2, … Yalnızca tek bir rapor içinde sabittir. Geliştiricileri raporlar arasında emails ile eşleştirin.
displayNamestringAd (birleştirilmiş adlar - ile birleştirilir)
emailsstring[]Küçük harfli yazar e-postaları
cleanCodeScoresayı | null0–100, yuvarlanmış; null = analiz edilen kod yok
scoreExactsayı | nullYuvarlanmamış puan
scoreByCategorynesne{ duplication, structure, hygiene }, her biri { density, subScore }; density büzülmeden sonradır
violationCountsayıhigh/medium güvenle eklenen ihlaller
weightedViolationPointssayıBu ihlallerin ağırlık toplamı
analyzedLinessayıAnaliz edilen commit'lerde eklenen/değiştirilen satırlar
attributedCodeLinessayıAynı değer (tarihsel ad)
violationDensitysayıKLOC başına ağırlıklı puan, büzülmeden önce
confidenceLevelinsufficient | provisional | reliable | highly_reliableAnaliz edilen satırlardan
rankablebooleanPuanı ve sıralanmak için yeterli satırı var
contributionPercentsayı 0–1Tüm analiz edilen satırlardaki payı
breakdownnesneAşağıya bakın
activeDayssayıCommit içeren farklı UTC günleri (tüm geçmiş)
firstContribution, lastContributionstring (ISO)İlk/son commit tarihi (tüm geçmiş)

breakdown

AlanAçıklama
introducedhigh/medium güvenle eklenen ihlaller (violationCount ile aynı)
fixedCommit'lerinin kaldırdığı ihlaller
existingDeğiştirdiği dosyalardaki önceden var olan ihlaller (bilgi amaçlı)
excludedGeliştirici düzeyinde her zaman 0 (şema kararlılığı için tutulur)
unattributedCommit'lerinin analiz edilemez hale getirdiği ihlaller (bilgi amaçlı)
introducedWeightedintroduced ağırlıklarının toplamı
fixedWeightedfixed ağırlıklarının toplamı
netQualityImpactintroducedWeighted − fixedWeighted (pozitif = kaldırılandan fazla borç eklendi)

introduced ve fixed değerlerinin analiz edilen commit'ler üzerinden tarihsel sayılar olduğunu, violations[] listesinin ise yalnızca şu anda kodda olanı listelediğini unutmayın.

Violation

AlanTipAçıklama
idstringKural + yol + satır + mesajın hash'i; rapor içinde benzersiz
ruleIdstring14 kural kimliğinden biri
messagestringOkunabilir ayrıntı, örn. Function load has 58 lines (limit 40).
severitycritical | high | medium | lowKural yapılandırmasından
weightsayıÖnem ağırlığı
categoryduplication | structure | hygiene
filePathstringDepoya göreli, / ayıraçlı
startLine, endLinesayı1'den başlar; endLine bulunmayabilir
symbolNamestring?Kapsayan fonksiyon/sınıf
fingerprintstringSabit kimlik (bkz. 07)
statusintroduced | existing | fixed | excluded | unattributedAtama durumu
confidencehigh | medium | lowAtama güveni
developerIdstring?İhlalin yazıldığı geliştirici (yalnızca high/medium)
introducedBystring?Commit'i ihlali ekleyen geliştirici (her güven düzeyi)
introducedCommitstring?Commit hash'i
introducedAtstring?Commit yazar tarihi (ISO)
source"internal"Bugün her zaman internal (eslint, ruff, pylint ayrılmıştır)

Örnek

json
{
  "schemaVersion": 2,
  "generatedAt": "2026-09-30T10:12:44.120Z",
  "engine": "commit-diff",
  "analysisConfigHash": "1x9k2ab",
  "developerCount": 2,
  "totalViolations": 1,
  "unattributedViolations": 0,
  "analyzedFiles": 12,
  "analyzedCommits": 40,
  "developers": [
    {
      "id": "dev-1",
      "displayName": "Alice",
      "emails": ["alice@example.com"],
      "cleanCodeScore": 82,
      "scoreExact": 81.7,
      "scoreByCategory": {
        "duplication": { "density": 0.8, "subScore": 95 },
        "structure": { "density": 9.1, "subScore": 82 },
        "hygiene": { "density": 12.4, "subScore": 72 }
      },
      "violationCount": 9,
      "weightedViolationPoints": 27,
      "analyzedLines": 2400,
      "attributedCodeLines": 2400,
      "violationDensity": 11.25,
      "confidenceLevel": "reliable",
      "rankable": true,
      "contributionPercent": 0.8,
      "breakdown": {
        "introduced": 9, "existing": 3, "fixed": 4, "excluded": 0, "unattributed": 0,
        "introducedWeighted": 27, "fixedWeighted": 10, "netQualityImpact": 17
      },
      "activeDays": 21,
      "firstContribution": "2026-05-02T09:00:00+03:00",
      "lastContribution": "2026-09-28T17:40:00+03:00"
    }
  ],
  "violations": [
    {
      "id": "k2j3h1",
      "ruleId": "maxComplexity",
      "message": "Function parse has complexity 14 (limit 10).",
      "severity": "high",
      "weight": 5,
      "category": "structure",
      "filePath": "src/parser.ts",
      "startLine": 40,
      "endLine": 96,
      "symbolName": "parse",
      "fingerprint": "1a2b3c",
      "status": "introduced",
      "confidence": "high",
      "developerId": "dev-1",
      "introducedBy": "dev-1",
      "introducedCommit": "3f9e1c…",
      "introducedAt": "2026-08-14T11:02:00+03:00",
      "source": "internal"
    }
  ]
}

(Değerler örnektir.)

jq ile yararlı sorgular

bash
# Puanlar, en düşük önce
jq -r '.developers | sort_by(.cleanCodeScore) | .[] | "\(.cleanCodeScore)\t\(.displayName)"' report.json

# Kritik ihlaller ve onları kimin eklediği
jq -r '.violations[] | select(.severity=="critical") | "\(.filePath):\(.startLine)\t\(.introducedBy // "-")"' report.json

# Kural başına ihlal sayısı
jq -r '.violations | group_by(.ruleId) | map("\(length)\t\(.[0].ruleId)") | .[]' report.json