Zpět na domů

CodeClone 2.0: baseline-analýza kódu v CI

CodeClone 2.0.0b1 evoluje do baseline-aware nástroje pro monitorování zdraví Python-kódu. Odděluje legacy-dluh od regresí prostřednictvím health score, dead code a structural findings. Podporuje SARIF, HTML-reporty s deterministickými CI-kontrakty.

CodeClone 2.0b1: kontrola zdraví kódu s baseline
Advertisement 728x90

CodeClone 2.0.0b1: Analýza zdraví kódu Pythonu s ohledem na baseline

CodeClone 2.0.0b1 přechází od jednoduchého detektoru klonů k nástroji pro kontrolu strukturálního zdraví projektů v Pythonu v CI. Nově se zaměřuje na porovnání s baseline: odděluje historický technický dluh od nových regresí. Podporuje score zdraví, detekci nevyužitého kódu a strukturální nalézání s deterministickými kontraktami pro plynulé pipeline.

Baseline jako základ CI-kontraktu

V verzi 2.0 se baseline vyvinul na ověřený snímek stavu projektu. Rozlišuje známé problémy od nových změn, účastní se gate metrik a funguje předvídatelně v režimu CI.

Klíčové principy:

Google AdInline article slot
  • Ověření podle schématu s důvěrnou semantikou.
  • Oddělení známého vs nového u klonů, složitosti a dalších metrik.
  • Upevnění aktuálního stavu jako baseline pro blokování nových regresí v hlavním větvi.

To umožňuje implementaci kvalitních gateů bez blokování celého projektu kvůli starým technickým dluhům.

Score zdraví: rozložitelná metrika kvality

Nový score zdraví agreguje několik signálů:

| Metrika | Popis |

Google AdInline article slot

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

| Klonování | Strukturální duplikace |

| Složitost | Složitost funkcí |

Google AdInline article slot

| Svazek | Propojení modulů |

| Soudržnost | Vnitřní propojení |

| Nevyužitý kód | Nevyužitý kód |

| Závislosti | Cykly závislostí |

| Pokrytí | Pokrytí testy |

Score se rozkládá do detailů: přínos produkčního kódu vs testů, problematické oblasti. Přehled v HTML reportu zobrazuje ukazatel, KPI kartičky a radarový graf.

Nevyužitý kód bez heuristik

Detektor nevyužitého kódu bereme v úvahu specifika Pythonu: framework hooky, reflexe, načítání pluginů. Místo implicitních výjimek — inline potlačení:

# codeclone: ignore[dead-code]
def handle_exception(exc: Exception) -> None:
    ...

nebo

class Middleware:  # codeclone: ignore[dead-code]
    ...

Potlačení lokálně deaktivuje pravidlo, nepůsobí na ostatní analýzy, prvky jsou viditelné v reportech, ale nemají dopad na score zdraví.

Strukturální nálezy mimo klonování

Přidán vrstva pro rané architektonické signály:

  • duplicated_branches — opakující se větve.
  • clone_guard_exit_divergence — rozdíly v uzlech ukončení klonů.
  • clone_cohort_drift — drift rodin podobných konstrukcí.

Core vytváří fakta ve kanonickém JSON, UI je vizualizuje bez dodatečného kreslení.

Formáty reportů z jediného zdroje

Všechny výstupy jsou projekce kanonického JSON:

  • HTML s přehledem, shrnutím pro ředitelství, rozkladem zdrojů.
  • JSON pro skripty.
  • Text/Markdown pro logy.
  • SARIF s baselineState, %SRCROOT%, artefakty pro IDE/code-scanning.

Determinismus zajišťuje stabilní třídění a kanonizaci payloadu.

Snížené prahy a výkon

Prahové hodnoty byly změkčeny pro širší pokrytí:

  • --min-loc pro funkce: 10 místo 15.
  • Měkčeji block/segment gates.

Cena: růst objemu analýzy. Kompenzováno optimalizací cache kontraktu a report kontraktu.

Kontrakty pod kapotou

Pevné specifikace:

  • Kontrakt baseline: schéma + semantika.
  • Kontrakt cache: předvídatelnost.
  • Kontrakt reportu: konzistence formátů.
  • CLI exit codes: jasná semantika.

Minimalizuje selhání v pipeline kvůli skrytým změnám.

Důležité

  • Baseline odděluje dluh od regrese pro reálný CI-gating.
  • Score zdraví je rozložen podle metrik s důrazem na produkční kód.
  • Inline potlačení pro nevyužitý kód zachovává transparentnost analýzy.
  • Strukturální nálezy chytají problémy před vznikem klonů.
  • SARIF-ready pro integraci do GitHub Actions, Azure DevOps.

— Editorial Team

Advertisement 728x90

Číst dál