Модуль 08 — Ревью и quality gates
Время: 4 часа · Формат: теория 80 мин + практика 160 мин
Теория
1. Ревью диффа — ваш главный навык
Агент пишет правдоподобно. Ревью — единственное место, где вы отделяете правду от правдоподобия.
Что смотреть в таком порядке:
1. Что удалено (delete-строки) ← самое опасное
2. Что изменено в условиях/проверках
3. Новые зависимости
4. Обработка ошибок
5. Тесты: реально ли проверяют
6. Стиль/форматирование ← в последнюю очередь
Дифф читают сверху вниз по удалениям, а не по добавлениям: добавления обычно и есть то, о чём просили.
2. Красные флаги
| Флаг | Пример | Почему плохо |
|---|---|---|
| Удалённая проверка | - if not user: return 403 |
дыра в безопасности |
| Проглоченная ошибка | except Exception: pass |
баг станет невидимым |
| Тест подогнан под код | assert result is not None |
ничего не проверяет |
| Заглушка | return True # TODO |
«работает» на бумаге |
| Новая зависимость | + import requests |
лишний риск/вес |
| Изменение вне задачи | правка в 10 чужих файлах | непроверяемо |
| Секрет в коде | API_KEY = "sk-..." |
утечка |
| Отключённый тест | @pytest.mark.skip |
тихое удаление проверки |
| Магическое число | if x > 42: |
неизвестно, откуда |
3. Безопасность
- Секреты: всегда через env/секрет-хранилище.
grep -rn "sk-"в диффе. - Инъекции: SQL/команды/шаблоны — только параметризация.
- Доверие входу: валидация на границе, не «в глубине».
- Supply chain: новая зависимость = новый поставщик кода. Проверяйте имя пакета (typosquatting — реальная атака).
- Права: агент не должен иметь доступ к продакшену.
4. Ревью агентом
Полезно как второй проход, но не как замена вашему:
Ты — строгий ревьюер. Вот дифф. Найди:
1) удалённые проверки, 2) проглоченные ошибки, 3) тесты, которые ничего не проверяют,
4) изменения вне задачи, 5) секреты. Только список проблем, без похвалы.
Ограничение: агент склонен соглашаться с кодом, который сам написал. Поэтому «второе мнение» лучше давать другой моделью или субагенту со свежим контекстом.
5. Quality gates
Что должно быть зелёным до мержа:
[ ] тесты
[ ] типы
[ ] линтер
[ ] ревью человеком (дифф прочитан)
[ ] нет секретов
[ ] нет отключённых тестов и заглушек
[ ] изменения соответствуют спеке
Автоматизируйте всё, кроме последнего пункта. Последний — только человек.
6. Сообщение о проблеме
Плохо: «тут что-то не так». Хорошо:
src/auth.py:42 — удалена проверка `if not user.is_active`.
Это позволяет неактивным пользователям логиниться. Верни проверку и добавь тест.
Конкретность = скорость исправления.
Чек-лист понимания
- Почему начинать ревью с удалённых строк?
- Назовите 5 красных флагов и риск каждого.
- Почему ревью той же моделью слабее ревью другой моделью?
- Какой пункт quality gates нельзя автоматизировать?
Практика
См. practice.md.