Automatyczna przed-recenzja
AI wyłapuje problemy przed ludzką recenzją
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:
Korzyści recenzji wspomaganej przez AI:
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
Automatyczna analiza PR
name: AI Code Reviewon: 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
Konfiguracja BugBot
## 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
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]); ```
DELETE /api/users/:id
# 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.jsPrzeanalizuj 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ństwaPrzejrzyj wszystkie zmiany pod kątem problemów bezpieczeństwa:- Uwierzytelnianie/autoryzacja- Walidacja danych wejściowych- Ujawnienie danych- Zależności trzecich
# Samo-recenzja przed złożeniem
## Przed utworzeniem PR@git diff mainPrzejrzyj moje zmiany i:1. Zidentyfikuj potencjalne problemy2. Zasugeruj ulepszenia3. Sprawdź zmiany łamiące4. Zweryfikuj pokrycie testami
## Generowanie opisu PRWygeneruj kompleksowy opis PR:- Stwierdzenie problemu- Podejście do rozwiązania- Wykonane testowanie- Zmiany łamiące- Notatki wdrożeniowe
## Pomocnik odpowiedzi na recenzję@comment "Proszę dodać więcej testów"Pomóż mi odpowiedzieć na ten komentarz recenzji:1. Jakie testy powinienem dodać?2. Wygeneruj kod testowy3. Wyjaśnij poprawę pokrycia
## 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// Źleconst secret = 'my-secret-key';
// Dobrzeconst secret = process.env.JWT_SECRET;if (!secret) { throw new Error('Zmienna środowiskowa JWT_SECRET nie ustawiona');}```
Dowiedz się więcej:
src/config/database.js
## 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 } }
Auto-zatwierdź bezpieczne zmiany
# Auto-zatwierdź określone PRrules: - 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'
Inteligentne przypisywanie recenzentów
Użyj Cursor Agent do analizy PR i sugerowania recenzentów:
Przepływ pracy:
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:
#!/bin/bash# Pobierz pliki PRPR_FILES=$(gh pr view $1 --json files -q '.files[].path')
# Utwórz prompt analizyecho "Analizuję PR #$1 pod kątem sugestii recenzentów..."echo "$PR_FILES" > pr-files.txtcursor pr-files.txt
# Przepływ pracy metryk jakości recenzji w Cursorze
## Analizuj jakość PR z trybem Agent:
1. Otwórz PR w Cursorze2. 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`:
```javascriptreturn { // 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:
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
Skrypt przepływu pracy
#!/bin/bash# Wygeneruj raport wpływu używając Cursoraecho "Analizuję PR #$1 pod kątem wpływu między-zespołowego..."
# Otwórz Cursor z szablonem recenzjicursor .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 recenzjiclass 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 -->
Metryka | Przed AI | Z AI | Poprawa |
---|---|---|---|
Czas recenzji | 45 min | 15 min | 67% szybciej |
Znalezione problemy | 3-5 | 10-15 | 3x więcej |
Problemy bezpieczeństwa | 20% przegapione | 2% przegapione | 90% lepiej |
Spójność recenzji | Zmienna | Wysoka | Ustandaryzowana |
Wartość nauki | Niska | Wysoka | Edukacyjna |
Opanuj przepływy recenzji aby:
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ą.