Was & Warum
Misst, ob ein Token gleichmäßig über die Datei verteilt ist oder burstet (lokal klumpt). In NLP bursten Content-Wörter, Funktionswörter sind gleichverteilt. Übertragen: gleichverteilte Tokens = strukturelle Keywords, burstende = lokale Konzepte.
Komplementär zu allen Häufigkeits-Metriken (Zipf, Entropy) — die zählen wie oft, Burstiness misst wo.
Skala
| Verhalten |
Beispiel |
erwarteter Wert |
| gleichverteilt (niedrig) |
def über die ganze Datei verstreut |
VMR ≈ 1 |
| mittel |
ein Helper lokal mehrfach, sonst nicht |
VMR > 1 |
| geklumpt (hoch) |
socket = assign(socket, …) × 8 in einem Block |
VMR >> 1 |
Umsetzung
- Neues Modul
lib/codeqa/metrics/file/burstiness.ex, @behaviour CodeQA.Metrics.File.FileMetric.
- Input:
ctx.tokens mit .line (Token-Struct = [:col, :content, :kind, :line], wird von Bradford bereits so genutzt). Pro Token-Typ: Inter-Arrival-Distanzen über die Zeilennummern → Variance-to-Mean-Ratio (VMR).
keys: ["mean_vmr", "max_vmr", "bursty_token_count"].
- Registrieren in
lib/codeqa/engine/analyzer.ex.
- Edge-Cases: leer /
< 2 Vorkommen pro Token → kein VMR.
Test
test/codeqa/metrics/file/burstiness_test.exs, Muster wie brevity_test.exs.
- Assertion: Token in jeder zweiten Zeile → VMR ≈ 0; Token 8× in einem Block, sonst nie → hohe
max_vmr.
Was & Warum
Misst, ob ein Token gleichmäßig über die Datei verteilt ist oder burstet (lokal klumpt). In NLP bursten Content-Wörter, Funktionswörter sind gleichverteilt. Übertragen: gleichverteilte Tokens = strukturelle Keywords, burstende = lokale Konzepte.
Komplementär zu allen Häufigkeits-Metriken (Zipf, Entropy) — die zählen wie oft, Burstiness misst wo.
Skala
defüber die ganze Datei verstreutsocket = assign(socket, …)× 8 in einem BlockUmsetzung
lib/codeqa/metrics/file/burstiness.ex,@behaviour CodeQA.Metrics.File.FileMetric.ctx.tokensmit.line(Token-Struct =[:col, :content, :kind, :line], wird vonBradfordbereits so genutzt). Pro Token-Typ: Inter-Arrival-Distanzen über die Zeilennummern → Variance-to-Mean-Ratio (VMR).keys:["mean_vmr", "max_vmr", "bursty_token_count"].lib/codeqa/engine/analyzer.ex.< 2Vorkommen pro Token → kein VMR.Test
test/codeqa/metrics/file/burstiness_test.exs, Muster wiebrevity_test.exs.max_vmr.