Skip to content

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

@aspala

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions