Was & Warum
Welche Tokens charakterisieren ein File gegenüber der Codebase? TF-IDF gewichtet Token-Häufigkeit im File (TF) gegen die Seltenheit über alle Files (IDF). Hohe Salienz = eigenständiges Domänen-Vokabular, niedrige = nur Allerwelts-Boilerplate.
Skala
| Verhalten |
Beispiel |
erwartete Salienz |
| niedrig (unspezifisch) |
def changeset(s, attrs), do: cast(s, attrs, @fields) |
niedrig |
| mittel |
Standard-Context mit paar Domänennamen |
mittel |
| hoch (salient) |
calculate_levenshtein_winnowing_fingerprint(...) |
hoch |
Umsetzung
- Codebase-Metric (braucht Document-Frequency über alle Files):
lib/codeqa/metrics/codebase/tf_idf_salience.ex, @behaviour CodeQA.Metrics.Codebase.CodebaseMetric (Muster wie Codebase.Similarity).
- Schritt 1: DF über alle
token_counts. Schritt 2: pro File TF-IDF-Vektor → mittlere/maximale Salienz + Top-Salient-Tokens.
- Output je File:
%{"mean_tfidf" => …, "top_salient_tokens" => [...]}.
- Registrieren via
Registry.register_codebase_metric/2 in lib/codeqa/engine/analyzer.ex.
- Edge-Cases: einzelnes File (IDF entartet) → flache Salienz, dokumentieren.
Test
test/codeqa/metrics/codebase/tf_idf_salience_test.exs.
- Assertion: ein Token nur in einem File → hohe Salienz dort; ein in allen Files gleich häufiges Token → Salienz ≈ 0.
Hinweis
Teilt die Codebase-Aggregation mit #43 (KL/JS). Der Korpus-Profil-Aufbau sollte beim ersten Codebase-Metric-PR sauber gelegt werden, damit beide ihn nutzen (siehe Reihenfolge-Diskussion: Codebase-Metriken zuletzt).
Was & Warum
Welche Tokens charakterisieren ein File gegenüber der Codebase? TF-IDF gewichtet Token-Häufigkeit im File (TF) gegen die Seltenheit über alle Files (IDF). Hohe Salienz = eigenständiges Domänen-Vokabular, niedrige = nur Allerwelts-Boilerplate.
Skala
def changeset(s, attrs), do: cast(s, attrs, @fields)calculate_levenshtein_winnowing_fingerprint(...)Umsetzung
lib/codeqa/metrics/codebase/tf_idf_salience.ex,@behaviour CodeQA.Metrics.Codebase.CodebaseMetric(Muster wieCodebase.Similarity).token_counts. Schritt 2: pro File TF-IDF-Vektor → mittlere/maximale Salienz + Top-Salient-Tokens.%{"mean_tfidf" => …, "top_salient_tokens" => [...]}.Registry.register_codebase_metric/2inlib/codeqa/engine/analyzer.ex.Test
test/codeqa/metrics/codebase/tf_idf_salience_test.exs.Hinweis
Teilt die Codebase-Aggregation mit #43 (KL/JS). Der Korpus-Profil-Aufbau sollte beim ersten Codebase-Metric-PR sauber gelegt werden, damit beide ihn nutzen (siehe Reihenfolge-Diskussion: Codebase-Metriken zuletzt).