← Вайбкодинг · Вайбкодинг с OpenCode EN FR Курс 30/70 →

Модуль 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`.
Это позволяет неактивным пользователям логиниться. Верни проверку и добавь тест.

Конкретность = скорость исправления.


Чек-лист понимания

  1. Почему начинать ревью с удалённых строк?
  2. Назовите 5 красных флагов и риск каждого.
  3. Почему ревью той же моделью слабее ревью другой моделью?
  4. Какой пункт quality gates нельзя автоматизировать?

Практика

См. practice.md.