Przejdź do głównej zawartości

Przepływy recenzji

Przekształć recenzje kodu z wąskich gardeł w akceleratory. Naucz się przepływów recenzji wspomaganych przez AI, które wyłapują więcej problemów, dostarczają lepsze feedback i przekształcają recenzje w możliwości nauki.

Tradycyjne wyzwania recenzji kodu:

  • Czasochłonna ręczna inspekcja
  • Niespójna jakość recenzji
  • Przegapione błędy i problemy bezpieczeństwa
  • Opóźnione cykle feedback
  • Zmęczenie recenzyjne

Korzyści recenzji wspomaganej przez AI:

  • Natychmiastowa kompleksowa analiza wszystkich zmian
  • Spójne kontrole jakości w wszystkich PR
  • Automatyczne skanowanie bezpieczeństwa i wykrywanie błędów
  • Edukacyjny feedback z wyjaśnieniami
  • Skupienie ludzkiej uwagi na architekturze i designie

Wpływ: Ukończ recenzje 5x szybciej wyłapując 3x więcej problemów.

Automatyczna przed-recenzja

AI wyłapuje problemy przed ludzką recenzją

Wzbogacenie recenzji

Uzupełnij ludzkie recenzje o wglądy AI

Recenzje edukacyjne

Przekształć recenzje w momenty nauczania

Automatyzacja recenzji

Automatyzuj powtarzalne zadania recenzyjne

  1. Automatyczna analiza PR

    .github/workflows/ai-review.yml
    name: AI Code Review
    on:
    pull_request:
    types: [opened, synchronize]
    jobs:
    ai-review:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Run AI Review
    run: |
    cursor review \
    --pr ${{ github.event.pull_request.number }} \
    --checks "bugs,security,performance,style" \
    --comment-on-issues
  2. Konfiguracja BugBot

    .cursor/BUGBOT.md
    ## Obszary skupienia recenzji
    ### Krytyczne dla bezpieczeństwa
    - Podatności na wstrzyknięcie SQL
    - Wektory ataków XSS
    - Obejścia uwierzytelniania
    - Ujawnione sekrety lub klucze
    ### Problemy wydajności
    - Problemy zapytań N+1
    - Wycieki pamięci
    - Nieefektywne algorytmy
    - Brakujące indeksy
    ### Jakość kodu
    - Złożone funkcje (>50 linii)
    - Głębokie zagnieżdżenia (>4 poziomy)
    - Magiczne liczby
    - Brakująca obsługa błędów
  3. Wyniki recenzji AI

    ## 🤖 Podsumowanie recenzji AI
    ### 🚨 Krytyczne problemy (2)
    1. **Ryzyko wstrzyknięcia SQL** - Linia 45 w `user.controller.js`
    ```javascript
    // Podatny kod
    const query = `SELECT * FROM users WHERE id = ${userId}`;
    // Sugerowana poprawka
    const query = 'SELECT * FROM users WHERE id = ?';
    db.query(query, [userId]);
    ```
    1. Brakujące uwierzytelnianie - Endpoint DELETE /api/users/:id
      • Nie zastosowano middleware auth
      • Każdy użytkownik może usunąć każde konto
    1. Wydajność: Potencjalne zapytanie N+1 w ładowaniu zamówień
    2. Styl: Niespójny wzorzec obsługi błędów
    3. Utrzymanie: Zbyt wysoka złożoność funkcji (cyklomatyczna: 15)
    • Dobre pokrycie testami nowych funkcji
    • Dodana odpowiednia walidacja danych wejściowych
    • Dołączona przejrzysta dokumentacja
# Proces recenzji wspomaganej przez AI
## Krok 1: Pobierz podsumowanie AI
@pr #1234 Dostarcz kompleksowe podsumowanie tego PR:
1. Jaki problem rozwiązuje?
2. Jakie są główne zmiany?
3. Jakie są ryzyka?
4. Co wymaga dokładnej recenzji?
## Krok 2: Głębokie wgłębienie w złożone obszary
@file src/payments/processor.js
Przeanalizuj tę logikę przetwarzania płatności:
- Czy są nieobsłużone przypadki brzegowe?
- Czy to może spowodować podwójne obciążenia?
- Czy obsługa błędów jest kompleksowa?
## Krok 3: Kontrola bezpieczeństwa
Przejrzyj wszystkie zmiany pod kątem problemów bezpieczeństwa:
- Uwierzytelnianie/autoryzacja
- Walidacja danych wejściowych
- Ujawnienie danych
- Zależności trzecich
## Recenzja z fokusem edukacyjnym
@pr #1234
@file src/auth/jwt.js
Dostarcz edukacyjną recenzję która:
1. **Wyjaśnia problemy** (nie tylko je identyfikuje)
- Dlaczego to jest problem?
- Co może pójść nie tak?
- Przykłady z rzeczywistego świata awarii
2. **Naucza najlepszych praktyk**
- Standardy branżowe dla tego wzorca
- Linki do autorytatywnych zasobów
- Alternatywne podejścia z kompromisami
3. **Dostarcza przykłady**
- Pokaż poprawiony kod
- Zademonstruj przypadki brzegowe
- Dołącz przypadki testowe
4. **Sugeruje zasoby nauki**
- Dokumentację do przeczytania
- Podobny dobrze zaimplementowany kod w bazie kodu
- Zewnętrzne tutoriale lub kursy
Przykład wyniku:
"""
### Problem bezpieczeństwa: Obsługa sekretu JWT
**Co jest nie tak:** Sekret JWT jest zakodowany na stałe w pliku źródłowym.
**Dlaczego to ma znaczenie:** Każdy z dostępem do twojego kodu (włączając publiczne repozytoria) może podrobić ważne tokeny, całkowicie omijając uwierzytelnianie.
**Rzeczywisty incydent:** W 2019 roku duża aplikacja ujawniła sekrety JWT w swoim publicznym repo, prowadząc do nieautoryzowanego dostępu do milionów kont.
**Najlepsza praktyka:** Przechowuj sekrety w zmiennych środowiskowych lub bezpiecznym vaulcie.
**Jak naprawić:**
```javascript
// Źle
const secret = 'my-secret-key';
// Dobrze
const secret = process.env.JWT_SECRET;
if (!secret) {
throw new Error('Zmienna środowiskowa JWT_SECRET nie ustawiona');
}
```

Dowiedz się więcej:

  • OWASP o zarządzaniu kluczami
  • Podobny wzorzec w naszej bazie kodu: src/config/database.js
  • Kurs: “Secure Node.js Development” na Pluralsight """
## Wzorzec 4: Automatyczne akcje recenzji
### Usprawnij powtarzalne zadania recenzyjne
1. **Auto-napraw proste problemy**
```javascript
// Konfiguracja akcji recenzji Cursor
{
"autoFix": {
"enabled": true,
"issues": [
"formatting",
"imports",
"simple-linting",
"obvious-typos"
],
"requireApproval": false
}
}
  1. Auto-zatwierdź bezpieczne zmiany

    # Auto-zatwierdź określone PR
    rules:
    - name: 'Tylko dokumentacja'
    conditions:
    - files: '**/*.md'
    - no-files: '**/*.{js,ts,py,java}'
    action: 'auto-approve'
    - name: 'Aktualizacje zależności'
    conditions:
    - author: 'dependabot'
    - files: '**/package-lock.json'
    - ci-status: 'passing'
    action: 'auto-approve'
  2. Inteligentne przypisywanie recenzentów

    Użyj Cursor Agent do analizy PR i sugerowania recenzentów:

    Przepływ pracy:

    1. Otwórz diff PR w Cursorze
    2. Użyj trybu Agent (Ctrl+I) z tym promptem:
    Przeanalizuj @Git zmiany i zasugeruj odpowiednich recenzentów na podstawie:
    - Zmodyfikowanych plików i ich własności
    - Dotkniętych domen technicznych (auth, database, UI, itp.)
    - Złożoności zmian
    - Wymaganej ekspertyzy
    Rozważ naszą strukturę zespołu:
    - Zespół bezpieczeństwa: auth, crypto, uprawnienia
    - Zespół bazy danych: migracje, zapytania, schemat
    - Zespół frontendowy: komponenty UI, styling, UX

    Skrypt integracji GitHub:

    analyze-pr-reviewers.sh
    #!/bin/bash
    # Pobierz pliki PR
    PR_FILES=$(gh pr view $1 --json files -q '.files[].path')
    # Utwórz prompt analizy
    echo "Analizuję PR #$1 pod kątem sugestii recenzentów..."
    echo "$PR_FILES" > pr-files.txt
    cursor pr-files.txt
# Przepływ pracy metryk jakości recenzji w Cursorze
## Analizuj jakość PR z trybem Agent:
1. Otwórz PR w Cursorze
2. Użyj Agent (`Ctrl+I`) do analizy:
- "Oceń jakość tego PR na podstawie @Git zmian"
- "Sprawdź pokrycie testami dla @Recent Changes"
- "Zidentyfikuj potencjalne problemy w @Files"
## Śledź metryki używając reguł Cursora:
Utwórz `.cursor/rules/review-metrics.md`:
```javascript
return {
// Metryki czasowe
timeToFirstReview: pr.firstReviewTime - pr.createdAt,
timeToMerge: pr.mergedAt - pr.createdAt,
// Metryki jakości
issuesFoundByAI: aiAnalysis.issues.length,
issuesFoundByHumans: pr.comments.filter(c => c.isIssue).length,
issuesMissedByHumans: aiAnalysis.issues.filter(i =>
!pr.comments.some(c => c.line === i.line)
).length,
// Metryki pokrycia
filesReviewed: pr.filesChanged,
linesReviewed: pr.additions + pr.deletions,
testCoverage: aiAnalysis.testCoverage,
// Metryki wyników
bugsInProduction: await trackPostMergeBugs(pr),
requiredHotfixes: await trackHotfixes(pr)
};
}
};
## Zaawansowane techniki recenzji
### Technika 1: Automatyzacja recenzji architektury
```markdown
## Recenzja architektury AI
@pr #1234
@folder src/
Wykonaj recenzję architektury:
1. **Analiza zależności**
- Dodane nowe zależności
- Zależności kołowe
- Audit bezpieczeństwa zależności
- Wpływ na rozmiar bundle
2. **Zgodność ze wzorcami projektowymi**
- Przestrzega ustalonych wzorców?
- Wprowadza nowe wzorce?
- Utrzymuje spójność?
3. **Wpływ na wydajność**
- Analiza zapytań bazy danych
- Wzorce wywołań API
- Wpływ na bundle frontendowy
- Wzorce użycia pamięci
4. **Obawy dotyczące skalowalności**
- Czy to będzie skalować do 10x użytkowników?
- Wymagania indeksów bazy danych
- Możliwości cachowania
- Potrzeby ograniczania szybkości
5. **Wpływ na utrzymanie**
- Wzrost złożoności kodu
- Potrzeby dokumentacji
- Wymagania testowe
- Dodatkowe monitorowanie

Używanie Cursora do analizy wpływu między-zespołowego:

  1. Utwórz szablon analizy wpływu

    Zapisz jako .cursor/templates/cross-team-review.md:

    # Analiza recenzji między-zespołowej
    ## Sprawdź zmiany łamiące:
    Użyj @Git do analizy zmian pod kątem:
    - Modyfikacji kontraktów API
    - Zmian schematu bazy danych
    - Aktualizacji bibliotek współdzielonych
    - Zmian konfiguracji
    ## Analiza specyficzna dla zespołu:
    ### Wpływ na zespół mobilny:
    - Sprawdź @Files w /api/\* pod kątem zmian endpointów
    - Przejrzyj @Recent Changes pod kątem aktualizacji formatów odpowiedzi
    ### Wpływ na zespół danych:
    - Sprawdź @Files w /migrations/\* pod kątem zmian schematu
    - Przejrzyj @Recent Changes w modelach bazy danych
    ### Wpływ na zespół frontendowy:
    - Sprawdź @Files w /shared/\* pod kątem zmian komponentów
    - Przejrzyj @Recent Changes pod kątem aktualizacji biblioteki UI
  2. Skrypt przepływu pracy

    cross-team-review.sh
    #!/bin/bash
    # Wygeneruj raport wpływu używając Cursora
    echo "Analizuję PR #$1 pod kątem wpływu między-zespołowego..."
    # Otwórz Cursor z szablonem recenzji
    cursor .cursor/templates/cross-team-review.md
    # W Cursor Agent użyj promptów takich jak:
    # "Przeanalizuj @Git zmiany pod kątem zmian łamiących które wpływają na inne zespoły"
    # "Sprawdź czy @Recent Changes wpływają na kontrakty API mobilne"
    # "Przejrzyj @Files bazy danych pod kątem zmian schematu wymagających migracji"
// Ucz się ze wzorców recenzji
class ReviewLearningSystem {
async learnFromReview(pr) {
// Zbierz co zostało przegapione
const missedIssues = await this.findProductionIssues(pr);
if (missedIssues.length > 0) {
// Zaktualizuj reguły AI
await this.updateReviewRules({
pattern: this.extractPattern(missedIssues),
description: 'Sprawdź podobne problemy',
examples: missedIssues,
});
// Zaalarmuj zespół
await this.notifyTeam({
title: 'Wykryto nowy wzorzec recenzji',
pattern: pattern,
action: 'Proszę przejrzeć i potwierdzić',
});
}
}
}
## Opis Pull Request
### 🎯 Cel
<!-- AI pomoże podsumować cel -->
### 🔄 Zmiany
<!-- AI wylistuje wszystkie znaczące zmiany -->
### 🧪 Testowanie
- [ ] Testy jednostkowe dodane/zaktualizowane
- [ ] Testy integracyjne przeszły
- [ ] Testowanie manualne ukończone
- [ ] Generowanie testów AI uruchomione
### 🔍 Lista kontrolna recenzji
- [ ] Kod przestrzega wytycznych stylu
- [ ] Samo-recenzja ukończona
- [ ] Przed-recenzja AI adresowana
- [ ] Dokumentacja zaktualizowana
- [ ] Brak problemów bezpieczeństwa
### 🤖 Podsumowanie recenzji AI
<!-- Automatycznie wypełniane przez AI -->
### 📝 Dodatkowe notatki
<!-- Wszelkie specjalne instrukcje dla recenzentów -->
MetrykaPrzed AIZ AIPoprawa
Czas recenzji45 min15 min67% szybciej
Znalezione problemy3-510-153x więcej
Problemy bezpieczeństwa20% przegapione2% przegapione90% lepiej
Spójność recenzjiZmiennaWysokaUstandaryzowana
Wartość naukiNiskaWysokaEdukacyjna
  • Recenzja AI ukończona
  • Wszystkie kontrole CI przechodzą
  • Opis PR kompletny
  • Zmiany są skupione
  • Testy dołączone
  • Rozumiem cel
  • Sprawdzam problemy oflagowane przez AI
  • Recenzuję wpływ architektury
  • Weryfikuję pokrycie testami
  • Rozważam przypadki brzegowe
  • Wszystkie komentarze adresowane
  • Ponowna recenzja jeśli znaczące zmiany
  • Dokumentacja zaktualizowana
  • Plan wdrożenia jasny
  • Zespół powiadomiony w razie potrzeby

Opanuj przepływy recenzji aby:

  • Zmniejszyć czas cyklu recenzji o 70%
  • Wyłapać krytyczne problemy przed produkcją
  • Przekształcić recenzje w doświadczenia nauki
  • Budować lepszą współpracę zespołową

Kontynuuj z:

Pamiętaj: Najlepsza recenzja kodu to ta, która wyłapuje błędy, naucza developerów i shipuje szybko. Używaj AI do obsługi mechanicznych części, podczas gdy ludzie skupiają się na designie i dzieleniu się wiedzą.