Zurück zur Startseite

CodeClone 2.0: Baseline-Code-Analyse in CI

CodeClone 2.0.0b1 entwickelt sich zu einem baseline-bewussten Tool zur Überwachung der Python-Code-Health. Trennt Legacy Debt von Regressionen über Health Score, Dead Code und strukturelle Erkenntnisse. Unterstützt SARIF-, HTML-Berichte mit deterministischen CI Contracts.

CodeClone 2.0b1: Code-Health-Kontrolle mit Baseline
Advertisement 728x90

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:

Google AdInline article slot
  • 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 |

Google AdInline article slot

|--------------|--------------------------------------|

| Clones | Strukturelle Wiederholung |

| Komplexität | Cyclomatische Komplexität von Funktionen |

Google AdInline article slot

| 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-loc fü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

Advertisement 728x90

Weiterlesen