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.
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_patternsum die Verteilungsform ergänzt.Skala
sum = a + b/avg = sum / 2/out = round(avg)x = 1/result = Enum.reduce(huge, %{}, fn …)/y = 2Umsetzung
lib/codeqa/metrics/file/statement_length.ex,@behaviour CodeQA.Metrics.File.FileMetric.ctx.lines(bzw. die Daten, auf denenMetrics.File.LinePatternsschon arbeitet). Längen-Verteilung → Mean, Varianz, Coefficient of Variation, Skewness.keys:["mean_length", "length_variance", "length_cv", "length_skewness"].lib/codeqa/engine/analyzer.ex.Test
test/codeqa/metrics/file/statement_length_test.exs, Muster wiebrevity_test.exs.length_cv ≈ 0; Mini- neben Monster-Zeilen → hoherlength_cv.Hinweis
Sitzt nahe an
Metrics.File.LinePatterns— prüfen, ob die Längen-Rohdaten dort wiederverwendbar sind, statt doppelt zu zählen.