CodeClone 2.0.0b1: Python-Code-Gesundheitsanalyse mit Baseline-Bewusstsein
CodeClone 2.0.0b1 entwickelt sich von einem einfachen Clone-Detektor zu einem strukturellen Gesundheitsmonitor für Python-Projekte in CI-Pipelines. Der Fokus liegt nun auf der Baseline-Abgleichung – die Unterscheidung zwischen historischem technischem Schulden und neuen Regressionsproblemen. Es unterstützt eine Gesundheitsbewertung, die Erkennung toter Codeblöcke sowie strukturelle Anomalien mit deterministischen Verträgen für eine nahtlose Integration in Build-Pipelines.
Die Basis: Die Grundlage für CI-Verträge
In der Version 2.0 ist die Baseline zu einem validierten Zustands-Snapshot des Projekts geworden. Sie trennt bekannte Probleme von aktuellen Änderungen, nimmt an Metrik-Gates teil und verhält sich vorhersehbar in CI-Umgebungen.
Wichtige Prinzipien:
- Schema-Validierung mit Vertrauenssemantik.
- Klare Trennung zwischen bekannten und neuen Problemen bei Clones, Komplexität und anderen Metriken.
- Fixierung des aktuellen Zustands als Baseline, um neue Regressionsprobleme im Hauptbranch zu verhindern.
Das ermöglicht Qualitätsgate ohne Blockierung ganzer Projekte aufgrund alter technischer Schulden.
Gesundheits-Score: Eine modulare Qualitätsmetrik
Der neue Gesundheits-Score fasst mehrere Signale zusammen:
| Metrik | Beschreibung |
|--------------|--------------------------------------|
| Clones | Strukturelle Wiederholung |
| Komplexität | Cyclomatische Komplexität von Funktionen |
| Kopplung | Abhängigkeit zwischen Modulen |
| Kohäsion | Interne Konsistenz innerhalb von Modulen |
| Toter Code | Nicht genutzter Code |
| Abhängigkeiten | Abhängigkeitszyklen |
| Testabdeckung | Testabdeckungsrate |
Der Score wird detailliert aufgeschlüsselt: Beitrag von Produktionscode vs. Tests, sowie Risikozonen. Der HTML-Bericht enthält Schaltflächen, KPI-Karten und Radar-Charts für schnelle Einblicke.
Erkennung toter Code ohne Heuristiken
Der Detektor für toten Code berücksichtigt Python-spezifische Muster: Framework-Hooks, Reflection, Plugin-Ladeprozesse. Statt impliziter Ausschlüsse nutzt er Inline-Suppressionen:
# codeclone: ignore[dead-code]
def handle_exception(exc: Exception) -> None:
...
oder
class Middleware: # codeclone: ignore[dead-code]
...
Die Unterdrückung deaktiviert die Regel lokal, ohne andere Analysen zu beeinflussen. Elemente erscheinen im Bericht, wirken aber nicht auf den Gesundheits-Score.
Strukturelle Erkenntnisse jenseits von Clones
Eine neue Ebene erfasst frühe architektonische Hinweise:
duplicated_branches– wiederholte Steuerflusszweige.clone_guard_exit_divergence– Abweichung der Exit-Punkte bei geklonten Blöcken.clone_cohort_drift– Verschiebung innerhalb von Gruppen ähnlicher Konstruktionen.
Der Kern generiert Fakten in kanonischem JSON; die Oberfläche visualisiert sie ohne zusätzliche Rendering-Logik.
Berichte aus einer Quelle
Alle Ausgaben sind Projektionen des kanonischen JSON:
- HTML mit Übersicht, Exekutiv-Zusammenfassung und Quellcode-Aufschlüsselung.
- JSON für Automatisierungsskripte.
- Text/Markdown für Logs.
- SARIF-Format mit
baselineState,%SRCROOT%und IDE-/Code-Scanning-Artefakten.
Determinismus wird durch stabile Sortierung und Payload-Kanonisierung gewährleistet.
Geringere Schwellenwerte & Leistung
Schwellenwerte wurden angepasst, um eine breitere Abdeckung zu ermöglichen:
--min-locfür Funktionen: von 15 auf 10 reduziert.- Weichere Block-/Segment-Gates.
Kompromiss: erhöhte Analysemenge. Kompensiert durch Optimierungen im Cache und Berichtsvertrag.
Verträge im Hintergrund
Strenge Spezifikationen:
- Baseline-Vertrag: Schema + Semantik.
- Cache-Vertrag: Vorhersagbarkeit.
- Berichts-Vertrag: Konsistente Formatierung.
- CLI-Ausgabecodes: Klare semantische Bedeutung.
Diese minimieren Pipeline-Fehler durch versteckte Änderungen.
Was zählt
- Die Baseline isoliert Schulden von Regressionsproblemen für realistische CI-Gate-Steuerung.
- Der Gesundheits-Score ist granular und legt den Fokus auf Produktionscode.
- Inline-Suppressionen gewährleisten Transparenz bei der Analyse toter Codeblöcke.
- Strukturelle Erkenntnisse erkennen Probleme, bevor Clones entstehen.
- SARIF-fähig für Integration mit GitHub Actions, Azure DevOps.
— Editorial Team
Noch keine Kommentare.