Skip to content

feat(metrics): Statement-Längen-Verteilung (Anweisungs-Rhythmus) #55

Description

@aspala

Was & Warum

Das Code-Analog zur Satzlängen-Verteilung in der Stylometrie: die Verteilung der Statement-/Zeilenlängen. Gleichmäßig = ruhiger Rhythmus, hohe Varianz = abgehackt (Mini-Zeilen neben Monster-Zeilen). Ein stabiles Stil- und Lesbarkeits-Signal, das line_patterns um die Verteilungsform ergänzt.

Skala

Verhalten Beispiel erwartete Varianz
niedrig (gleichmäßig) sum = a + b / avg = sum / 2 / out = round(avg) niedrig
mittel normale Schwankung mittel
hoch (abgehackt) x = 1 / result = Enum.reduce(huge, %{}, fn …) / y = 2 hoch

Umsetzung

  • Neues Modul lib/codeqa/metrics/file/statement_length.ex, @behaviour CodeQA.Metrics.File.FileMetric.
  • Input: ctx.lines (bzw. die Daten, auf denen Metrics.File.LinePatterns schon arbeitet). Längen-Verteilung → Mean, Varianz, Coefficient of Variation, Skewness.
  • keys: ["mean_length", "length_variance", "length_cv", "length_skewness"].
  • Registrieren in lib/codeqa/engine/analyzer.ex.
  • Edge-Cases: leer / 1 Zeile → Nullwerte.

Test

  • test/codeqa/metrics/file/statement_length_test.exs, Muster wie brevity_test.exs.
  • Assertion: gleich lange Zeilen → length_cv ≈ 0; Mini- neben Monster-Zeilen → hoher length_cv.

Hinweis

Sitzt nahe an Metrics.File.LinePatterns — prüfen, ob die Längen-Rohdaten dort wiederverwendbar sind, statt doppelt zu zählen.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions