Процедуры контроля
Обеспечение качества кода и консистентности среды через процессы ревью и автоматизированные проверки.
Code Review зависимостей
MUST
Ревьюер обязан убедиться, что:
- Обоснована целесообразность добавления зависимости
- Дубликаты отсутствуют среди существующих зависимостей
- Пакет стабильно поддерживается
- Лицензия совместима с проектом
- Влияние на размер бандла оценено (> 100 KB – требует согласования с Tech Lead)
- Аналог в проекте отсутствует
SHOULD
Допустимые причины добавления зависимости:
- Новый функционал
- Необходимость инфраструктурного/архитектурного решения
- Улучшение производительности или безопасности
- Работа с датами, временем, таймзонами
FORBIDDEN
- Зависимость добавлена без технического обоснования
- Дубликаты существующих инструментов
- Использование крупных библиотек без обсуждения
Контроль консистентности среды
MUST
Ревьюер обязан проверить в PR:
- Зафиксированы версии Node.js и package manager
- Lock-файл присутствует и соответствует изменениям зависимостей
- Все CI-команды выполняются через
package.jsonscripts - Нет обходов проверок через
.env.localили отключение линтеров/хуков
Контроль безопасности зависимостей
MUST
Обязательные проверки:
- Использование
npm audit/pnpm audit - Snyk CLI или аналогичные инструменты
Интеграция в CI/CD:
Аудит зависимостей должен выполняться:
- При каждом добавлении или обновлении зависимостей (PR)
- Не реже одного раза в неделю (scheduled run)
SHOULD
Примеры реализации:
| Платформа | Инструменты |
|---|---|
| GitHub | • GitHub Actions step • Dependabot (автоматические PR на обновление уязвимых зависимостей) |
| Bitbucket | • Отдельный audit step в Bitbucket Pipelines • Scheduled pipeline (еженедельный) |
Эскалация решений
SHOULD
В спорных случаях решение принимает:
- Tech Lead
- Команда (коллективное обсуждение)
Примечания
MAY
- Предложенные конфигурации являются стандартизированной точкой входа
- Если проект имеет специфику, допускается корректировка правил по согласованию с Tech Lead или PM
- Работа со стандартами не должна занимать значительную часть времени разработки
Чек-лист для ревьюера
- Node версия зафиксирована (mise/.tool-versions/engines.node) и совпадает с CI
- package.json.packageManager задан и используется в CI
- CI выполняет команды только через scripts из package.json
- Все env-переменные задокументированы в .env.example и README
- Feature Flags – отдельный централизованный механизм, не .env.*
- Нет Infrastructure Configuration Branches в features/entities/widgets/pages
- Нет клиентских env-переменных в .env.production/.env.staging
- Docker (если используется) повторяет CI окружение
- Lock-файлы присутствуют в репозитории
- Нет локальных shell-скриптов, не добавленных в репозиторий