Automatizovaný CPG-konvej pro bezpečné AI programování
Claude za 38 minut vygeneroval 47 souborů a 1900 řádků kódu, včetně refaktoringu a migrace. Rychlost AI překračuje schopnosti lidské kontroly, což vede ke kumulaci technického dluhu bez automatizovaných opatření.
CPG-konvej řeší tento problém: analyzuje každý commit, poskytuje kontext z grafu kódu před generací a hodnotí rizika v PR. Přeměňuje "vibroprogramování" na kontrolovaný proces.
Hlavní problémy vibroprogramování
AI-generování bez ověření způsobuje opakující se chyby:
- Duplikace logiky místo přesunu do společných modulů, což zvyšuje objem kódu a větvení.
- Chybějící přehled o volacím grafu: úprava jednoho souboru ovlivňuje desítky závislostí.
- Odchylka dokumentace: neshody čísel v textech a kódu byly zjištěny v 14 případech během auditu.
Architektura CPG-konveje
Konvej využívá hooky Claude Code na pěti fázích:
- Zahájení relace: snímek projektu – počet metod, souborů, průměrná cyklomatická složitost.
- Zpracování promptu: extrakce kontextu podle třídy (umístění, složitost metod, vstupní/výstupní volání).
- Upozornění před úpravou: vysoká složitost, TODO v souboru, veřejné cesty.
- Po-commitech: analýza kvality a rozsahu změn.
- Ukončení relace: post-analýza změn složitosti a objemu.
Detaily commit_analysis.py
Klíčový hook commit_analysis.py běží po git commit:
- Kontrola aktualizace CPG podle hashu commitu proti HEAD.
- Inkrementální aktualizace:
gocpg update. - Analýza kvality: cyklomatická složitost, TODO/FIXME, ladící kód, zastaralé metody.
- Analýza dopadu: volající metody, přístupové rozhraní.
Model obdrží zprávu: «upraveno 4 soubory, dotčeno 12 metod, složitost vzrostla z 8 na 12, 8 volajících je pod rizikem».
Výhody předgenerovaného kontextu
Kontext z CPG před promptem mění chování modelu. Bez něj – slepé úpravy. S ním: znalost o složitosti (8), voláních (8 přímých), TODO, rozhraních (CLI, ale ne REST).
To snižuje riziko kompatibility a zvyšuje přesnost generování.
Git-hooky pro aktuálnost grafu
CPG se ztrácí při každém commitu. Hooky post-commit, post-merge, post-checkout spouští gocpg update asynchronně:
- Úplný pars: 85 sekund.
- Inkrement pro 2 soubory: 2–5 sekund.
- Pro 10–20 souborů: 5–12 sekund.
Vývojář nečeká, graf se aktualizuje na pozadí.
Integrace do CI/CD
V CI: sestavení GoCPG, obnovení mezipaměti, aktualizace od základní větve, publikování do PR-komentáře + SARIF anotací.
Recenzent vidí:
- Počet upravených souborů a uzlů grafu.
- Zásahy do mezipaměti.
- Rizika a bezpečnostní nálezy.
Claims_validator.py pro dokumentaci
Validátor skenuje markdown na číselné tvrzení («95 handlerů») a porovnává je s SQL dotazy k CPG. Rozdíly detekuje za sekundy.
Případ: validace uživatelských příběhů
Úkol: ověřit 83 příběhů na pokrytí 5 rozhraními (CLI, REST, TUI, MCP, ACP).
AI vygeneroval StoryValidationRunner (450 řádků, 39 testů – vše zelené).
První spuštění: 0 pokrytí kvůli chybám (cesty Windows/Unix, interaktivní vs balíčkový režim).
Po opravách: 46 plné, 32 částečné, 2 nenalezeny, 3 neaplikovatelné.
Dále: falešné signály z regex (první segment cesty, absence stop-slov). Přesnost stoupla, metrika «plné pokrytí» klesla z 49 na 46 – znak zlepšení.
Unit testy nechytily problémy reálného grafu.
Rozšířené kontroly v code review
Konvej se rozšířil na 13 kontrol:
- Upozornění pro veřejné metody (CLI/REST/MCP).
- Registrace nových handlerů.
- Mezimodulové závislosti.
- Analýza git diff.
- Samostatný Go CPG.
- Ověření testů pro nové soubory.
- Tranzitivní analýza volání.
- Delta pokrytí příběhů.
Uložení historie kvality v DuckDB
Snímky po analýze: metody, složitost, TODO, mrtvý kód. Během týdne: +46 metod, složitost stabilní, těžké metody ↓.
Co je důležité
- Předgenerovaný CPG-kontext snižuje chyby před generací.
- Inkrementální aktualizace grafu trvají sekundy.
- Automatické zprávy v PR zaměřují revizi na rizika.
- Validace čísel v dokumentaci zabrání odchylce faktů.
- Metriky kvality v DuckDB ukazují trendy projektu.
— Editorial Team
Zatím žádné komentáře.