Урок 10 из 16•15 мин
Code Review Skill
Цели урока
После прохождения этого урока вы сможете:
- 1Создать навык для код-ревью
- 2Настроить чек-листы проверки
- 3Интегрировать с Git workflow
Автоматизация код-ревью
Код-ревью занимает много времени, но его качество часто страдает из-за усталости или спешки. Навык код-ревью стандартизирует процесс и не пропускает важные проверки.
SKILL.md
markdown
# Code Reviewer
## Description
Активируй для ревью кода:
- Проверка pull request
- Анализ отдельных файлов
- Поиск потенциальных проблем
- Предложения по улучшению
## Instructions
### Категории проверки
1. **Безопасность** — уязвимости, утечки данных
2. **Производительность** — неэффективный код
3. **Читаемость** — понятность, именование
4. **Тесты** — покрытие, качество
5. **Архитектура** — паттерны, связность
### Чек-лист безопасности
Подробности в @checklists/security.md
### Чек-лист производительности
Подробности в @checklists/performance.md
### Формат комментариев
- [CRITICAL] — блокирует мёрж
- [MAJOR] — нужно исправить
- [MINOR] — желательно исправить
- [NIT] — мелочь, на усмотрение
### Структура отчёта
1. Общая оценка (Approve / Request Changes)
2. Критические проблемы
3. Рекомендации по улучшению
4. Положительные моментыЧек-лист безопасности
markdown
# Security Checklist
## Ввод пользователя
- [ ] Все входные данные валидируются
- [ ] SQL-запросы параметризованы
- [ ] HTML экранируется (XSS)
- [ ] Пути к файлам проверяются (path traversal)
## Аутентификация
- [ ] Пароли хешируются (bcrypt/argon2)
- [ ] Токены имеют срок жизни
- [ ] Rate limiting на auth endpoints
- [ ] Нет хардкода секретов
## Данные
- [ ] Чувствительные данные шифруются
- [ ] Логи не содержат секретов
- [ ] HTTPS везде
- [ ] CORS настроен правильноПример ревью
Вы: Сделай ревью этого файла [user_controller.py]
Claude: [Активирует code-reviewer]
---
## Code Review: user_controller.py
Вердикт: Request Changes
### [CRITICAL] SQL Injection (строка 42)
```python
# Было
query = f"SELECT * FROM users WHERE id = {user_id}"
# Нужно
query = "SELECT * FROM users WHERE id = %s"
cursor.execute(query, (user_id,))
```
### [MAJOR] Отсутствует rate limiting (строка 15)
Endpoint
### [MINOR] Неинформативное имя переменной (строка 28)
### Положительное
- Хорошая структура функций
- Docstrings присутствуют
- Типизация используется
Claude: [Активирует code-reviewer]
---
## Code Review: user_controller.py
Вердикт: Request Changes
### [CRITICAL] SQL Injection (строка 42)
```python
# Было
query = f"SELECT * FROM users WHERE id = {user_id}"
# Нужно
query = "SELECT * FROM users WHERE id = %s"
cursor.execute(query, (user_id,))
```
### [MAJOR] Отсутствует rate limiting (строка 15)
Endpoint
/login не защищён от брутфорса.### [MINOR] Неинформативное имя переменной (строка 28)
x → user_data или response_payload### Положительное
- Хорошая структура функций
- Docstrings присутствуют
- Типизация используется
Для команды создайте общий навык код-ревью с вашими стандартами. Все разработчики будут получать консистентную обратную связь.
Вопросы для размышления
- •Какие проверки чаще всего пропускают в вашей команде?
- •Какие специфичные для вашего стека правила стоит добавить?
