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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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