Bramki jakości i egzekwowanie standardów
Twój zespół scalił PR w piątek, który wprowadził subtelny wyciek pamięci w obsłudze sesji użytkownika. Kod przeszedł wszystkie istniejące testy, ludzki recenzent zatwierdził go po szybkim rzucie oka, a linter nie miał nic do powiedzenia. Do poniedziałku rano serwis konsumował 4GB RAM i crashował co sześć godzin. Bramki jakości nie służą do wyłapywania błędów składniowych — służą do wyłapywania tego, co ludzie i lintery pomijają.
Co wyniesiesz z tego rozdziału
Dział zatytułowany „Co wyniesiesz z tego rozdziału”- Wielowarstwowa architektura bramek jakości wyłapująca problemy na każdym etapie
- Przepływy przeglądów kodu oparte na AI, które wykraczają poza sprawdzanie stylu
- Mierzalne metryki jakości korelujące z rzeczywistą stabilnością produkcyjną
- Wzorce promptów do głębokiej analizy kodu, w tym wydajności, bezpieczeństwa i utrzymywalności
- Strategie automatycznego egzekwowania, które nie spowalniają prędkości deweloperów
Architektura bramek jakości
Dział zatytułowany „Architektura bramek jakości”Bramki jakości działają warstwowo. Każda warstwa wyłapuje inne kategorie problemów i żadna pojedyncza warstwa nie jest wystarczająca sama w sobie.
Warstwa 1: Pre-Commit (maszyna dewelopera)
Dział zatytułowany „Warstwa 1: Pre-Commit (maszyna dewelopera)”Inline AI w Cursor wyłapuje problemy podczas pisania. Wzmocnij go jawnymi regułami jakości:
CODE QUALITY STANDARDS:Before suggesting any code, verify:- No functions longer than 50 lines- No files longer than 300 lines- Cyclomatic complexity under 10 per function- All public functions have JSDoc documentation- Error handling follows our Result<T, E> pattern (no bare try/catch)- No magic numbers - use named constants- All database queries go through the repository layerHooki Claude Code wymuszają bramki jakości przed zatwierdzeniem kodu:
{ "hooks": { "PreToolUse": [{ "matcher": "write|edit", "command": "node scripts/quality-check.js \"$FILE_PATH\"" }], "PostToolUse": [{ "matcher": "write|edit", "command": "npx eslint --fix \"$FILE_PATH\" && npx tsc --noEmit" }] }}Zapewnia to, że każdy plik napisany przez Claude Code natychmiast przechodzi linting i sprawdzanie typów.
Codex egzekwuje jakość poprzez swoje izolowane środowisko wykonawcze:
After every code modification:1. Run the file's test suite2. Run the linter on changed files3. Run type checking4. If any check fails, fix the issue before proceeding
Quality thresholds:- All new code must have accompanying tests- Test coverage for new code must be > 80%- No lint warnings allowed in new codeWarstwa 2: Pre-Push (pipeline CI)
Dział zatytułowany „Warstwa 2: Pre-Push (pipeline CI)”Warstwa 3: Post-Merge (ciągłe monitorowanie)
Dział zatytułowany „Warstwa 3: Post-Merge (ciągłe monitorowanie)”Po scaleniu kodu narzędzia AI mogą monitorować degradację jakości.
Wzorce głębokiego przeglądu kodu
Dział zatytułowany „Wzorce głębokiego przeglądu kodu”Przegląd przez pięć soczewek
Dział zatytułowany „Przegląd przez pięć soczewek”Zastosuj pięć odrębnych soczewek analitycznych do każdego znaczącego PR.
Uruchom każdą soczewkę jako osobną konwersację w Agent dla większej głębi:
Lens 1 - Correctness: Review /src/services/payment.ts changes.Assume every input is adversarial. Find every way this code couldproduce incorrect results, crash, or behave unexpectedly.Lens 2 - Performance: Same file. Assume 10,000 requests per second.Find bottlenecks, memory leaks, and unnecessary allocations.Lens 3 - Security: Same file. You are a penetration tester.Find every way to exploit this code.Użyj sub-agentów do uruchamiania wielu soczewek przeglądu równolegle:
claude "Review the changes in the current git diff through five lenses.For each lens, provide separate findings:
1. CORRECTNESS: Logic errors, edge cases, race conditions2. PERFORMANCE: N+1 queries, memory leaks, unnecessary computation3. SECURITY: Injection, auth bypass, data exposure4. MAINTAINABILITY: Complexity, naming, documentation gaps5. TESTABILITY: Missing tests, untestable patterns, flaky test risks
Rank all findings by severity and present the top 10 across all lenses."Perform a five-lens code review on the changes in this PR:1. Correctness: Will this produce wrong results for any valid input?2. Performance: Will this degrade under production load?3. Security: Can this be exploited by a malicious user?4. Maintainability: Will the next developer understand and modify this safely?5. Testability: Are there edge cases that the tests do not cover?
Post findings as inline PR comments at the relevant lines.Metryki jakości, które mają znaczenie
Dział zatytułowany „Metryki jakości, które mają znaczenie”Poza procentem pokrycia
Dział zatytułowany „Poza procentem pokrycia”Samo pokrycie testami nie wskazuje na jakość. Zamiast tego śledź te metryki:
| Metryka | Co ujawnia | Cel |
|---|---|---|
| Wynik mutacyjny | Testy rzeczywiście łapią błędy, nie tylko wykonują kod | > 75% |
| Średni czas wykrycia | Jak szybko błędy są znajdowane po wprowadzeniu | < 1 sprint |
| Wskaźnik uciekających defektów | Błędy, które docierają do produkcji | < 2% zmian |
| Czas reakcji na przegląd | Jak długo PR czeka na przegląd | < 4 godziny |
| Wskaźnik przeróbek | PR wymagające > 2 rund przeglądu | < 15% |
| Niezawodność buildu | Wskaźnik sukcesu pipeline CI | > 95% |
Egzekwowanie standardów w zespołach
Dział zatytułowany „Egzekwowanie standardów w zespołach”Współdzielona konfiguracja jakości
Dział zatytułowany „Współdzielona konfiguracja jakości”-
Stwórz współdzielony pakiet konfiguracji
Pakiet w twoim monorepo lub osobny pakiet npm zawierający konfiguracje ESLint, TypeScript, Prettier i twoje pliki reguł AI.
-
Dystrybucja przez zarządzanie pakietami
Każdy projekt rozszerza współdzieloną konfigurację. Lokalne nadpisania muszą być udokumentowane i zatwierdzone.
-
Egzekwowanie w CI
Pipeline sprawdza, czy współdzielone konfiguracje nie zostały nadpisane bez zatwierdzenia.
-
Reguły AI dziedziczą ze współdzielonej konfiguracji
Twoje pliki .cursor/rules lub CLAUDE.md odwołują się do współdzielonego dokumentu standardów.
-
Comiesięczne przeglądy jakości
Wspomagane AI kontrole kondycji bazy kodu uruchamiane co miesiąc, porównujące zespoły ze współdzielonymi benchmarkami.
Kiedy coś się psuje
Dział zatytułowany „Kiedy coś się psuje”“Deweloperzy czują, że bramki jakości ich spowalniają.” Twoje bramki są zbyt restrykcyjne lub wyłapują niewłaściwe rzeczy. Skup bramki jakości na problemach o wysokiej ważności (bezpieczeństwo, poprawność, wydajność). Pozostaw styl i formatowanie automatycznym formatterom, które naprawiają problemy cicho, zamiast blokować.
“Przegląd kodu przez AI generuje zbyt wiele fałszywych alarmów.” Dostosuj swoje prompty do przeglądu. Dodaj “Do not flag style issues” i “Only report issues that could cause bugs, security vulnerabilities, or performance problems in production.” Przejrzyj wnioski AI przez tydzień i dostosuj prompt na podstawie tego, co było faktycznie przydatne.
“Zespoły oszukują metryki.” Jeśli zespoły piszą bezsensowne testy, aby osiągnąć cele pokrycia, przejdź na testy mutacyjne. Nie da się oszukać wyników mutacyjnych bez pisania testów, które faktycznie weryfikują zachowanie.
“Jakość jest niespójna między kodem generowanym przez AI a pisanym przez ludzi.” Stosuj te same bramki jakości do całego kodu niezależnie od pochodzenia. Pipeline CI nie obchodzi, kto (lub co) napisał kod.