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:
- 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 |
|---------------|--------------------------------|
| Klonování | Strukturální duplikace |
| Složitost | Složitost funkcí |
| 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-locpro 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
Zatím žádné komentáře.