Automatyzowany CPG-conveyor do bezpiecznego kodowania z AI
Claude w ciągu 38 minut wygenerował 47 plików i 1900 linii kodu, w tym refaktoryzację i migrację. Prędkość działania AI przekracza możliwości ludzkiej weryfikacji, co prowadzi do nagromadzenia technicznego długu bez automatycznych środków kontroli.
CPG-conveyor rozwiązuje ten problem: analizuje każdy commit, dostarcza kontekst z grafu kodu przed generacją oraz ocenia ryzyka w PR. Dzięki temu AI-kodowanie staje się procesem kontrolowanym.
Główne problemy AI-kodowania
Generowanie kodu przez AI bez weryfikacji powoduje powtarzalne błędy:
- Duplikowanie logiki zamiast przenoszenia jej do wspólnych modułów, co zwiększa objętość kodu i gałęzie.
- Brak widoczności grafu wywołań: zmiana jednego pliku dotyka dziesiątek zależności.
- Rozbieżność dokumentacji: niezgodność liczb w tekście i kodzie, wykryta w 14 przypadkach podczas audytu.
Architektura CPG-conveyora
Conveyor wykorzystuje hooki Claude Code na pięciu etapach:
- Rozpoczęcie sesji: wycinek projektu — liczba metod, plików, średnia cyklomatyczna złożoność.
- Przetwarzanie promptu: wyodrębnianie kontekstu według klasy (lokalizacja, złożoność metod, wejściowe/wyjściowe wywołania).
- Ostrzeżenia przed modyfikacją: wysoka złożoność, TODO w pliku, publiczne ścieżki.
- Po-commicie: analiza jakości i zakresu zmian.
- Zakończenie sesji: analiza po zmianach złożoności i objętości.
Szczegóły commit_analysis.py
Kluczowy hook commit_analysis.py uruchamia się po git commit:
- Sprawdzenie aktualności CPG na podstawie hashu commita w porównaniu do HEAD.
- Aktualizacja inkrementalna:
gocpg update. - Analiza jakości: cyklomatyczna złożoność, TODO/FIXME, kod debugowy, przestarzałe metody.
- Analiza wpływu: wywołujące metody, interfejsy dostępu.
Model otrzymuje raport: «zmieniono 4 pliki, dotknięto 12 metod, złożoność wzrosła z 8 do 12, 8 wywołań pod ryzykiem».
Zalety kontekstu przed generacją
Kontekst z CPG przed promptem zmienia zachowanie modelu. Bez niego — modyfikacje na ślepo. Z nim: świadomość złożoności (8), wywołań (8 bezpośrednich), TODO, interfejsów (CLI, ale nie REST).
To zmniejsza ryzyko kompatybilności i zwiększa precyzję generacji.
Git-hooks do aktualności grafu
CPG ulega starzeniu przy każdym commicie. Hooki post-commit, post-merge, post-checkout uruchamiają asynchronicznie gocpg update:
- Pełny parsowanie: 85 sekund.
- Inkrementalne dla 2 plików: 2–5 sekund.
- Dla 10–20 plików: 5–12 sekund.
Programista nie czeka — graf aktualizuje się w tle.
Integracja z CI/CD
W CI: budowa GoCPG, odzyskanie cache’a, aktualizacja od gałęzi bazowej, publikacja w komentarzu do PR + annotacje SARIF.
Recenzent widzi:
- Liczbę zmienionych plików i węzłów grafu.
- Uderzenia w cache.
- Ryzyka i znalezione zagrożenia bezpieczeństwa.
Claims_validator.py do walidacji dokumentacji
Weryfikator skanuje markdown pod kątem liczbowych twierdzeń («95 handlerów») i dopasowuje je do zapytań SQL do CPG. Wykrywa rozbieżności w ciągu sekund.
Przypadek: walidacja historii użytkownika
Zadanie: sprawdzić 83 historie pod kątem pokrycia 5 interfejsami (CLI, REST, TUI, MCP, ACP).
AI wygenerował StoryValidationRunner (450 linii, 39 testów — wszystkie zielone).
Pierwsze uruchomienie: 0 pokrycia z powodu błędów (ścieżki Windows/Unix, interaktywne vs pakietowe).
Po poprawkach: 46 pełne, 32 częściowe, 2 nie znalezione, 3 niewykonalne.
Następnie: fałszywe sygnały z regex (pierwszy fragment ścieżki, brak słów stop). Dokładność wzrosła, metryka «pełne pokrycie» spadła z 49 do 46 — znak poprawy.
Testy jednostkowe nie łapały problemów rzeczywistego grafu.
Rozszerzone weryfikacje w recenzji kodu
Conveyor rozwinął się do 13 sprawdzianów:
- Ostrzeżenia dla publicznych metod (CLI/REST/MCP).
- Rejestracja nowych handlerów.
- Zależności między modułami.
- Analiza git diff.
- Oddzielny Go CPG.
- Weryfikacja testów dla nowych plików.
- Analiza transmisyjna wywołań.
- Delta pokrycia historii.
Przechowywanie historii jakości w DuckDB
Szybkie zrzuty po analizie: metody, złożoność, TODO, martwy kod. W ciągu tygodnia: +46 metod, złożoność stabilna, ciężkie metody ↓.
Co jest ważne
- Kontekst CPG przed generacją zmniejsza błędy jeszcze przed ich wystąpieniem.
- Inkrementalne aktualizacje grafu trwają sekundy.
- Automatyczne raporty w PR skupiają recenzję na ryzykach.
- Walidacja liczb w dokumentacji zapobiega rozbieżności faktów.
- Metryki jakości w DuckDB pokazują trendy projektu.
— Editorial Team
Brak komentarzy.