Сценарий 09: Проверка кода¶
Автоматическая проверка кода для запросов на слияние (PR/MR), изменений и локальных изменений.
Быстрый старт¶
# Выберите сценарий проверки кода
/select 09
Источники для проверки¶
Запрос на слияние в GitHub¶
/review github 123
Merge Request в GitLab¶
/review gitlab 456
Локальные изменения в Git¶
/review git
Файл изменений¶
/review file path/to/changes.patch
Понимание результатов проверки¶
╭─────────────── Результаты проверки ───────────────────────────╮
│ │
│ Оценка: 72/100 Рекомендация: ТРЕБУЮТСЯ ИЗМЕНЕНИЯ │
│ │
│ Найденные проблемы: │
│ │
│ 🔴 КРИТИЧЕСКИЙ Риск SQL-инъекции │
│ Расположение: src/api/user_query.c:45 │
│ Причина: Ввод пользователя вставляется напрямую в запрос│
│ Исправление: Используйте параметризованные запросы │
│ │
│ 🟡 СРЕДНИЙ Цикломатическая сложность │
│ Расположение: src/parser/gram.y:1234 │
│ Значение: 47 (порог: 10) │
│ Исправление: Вынесите вспомогательные функции │
│ │
│ 🟢 НИЗКИЙ Отсутствует проверка на NULL │
│ Расположение: src/utils/string.c:89 │
│ Исправление: Добавьте проверку указателя на NULL │
│ │
╰───────────────────────────────────────────────────────────╯
Проверка с встроенными комментариями¶
/review git --format md --inline
╭─────────────── Встроенные комментарии ────────────────────╮
│ │
│ src/api/user_query.c │
│ │
│ Строка 45: │
│ sprintf(query, "SELECT * FROM users WHERE id=%s", id); │
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^│
│ 🔴 SQL-инъекция: Используйте snprintf с экранированием │
│ │
│ Строка 67: │
│ char *result = malloc(len); │
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ 🟡 Память: Проверяйте возвращаемое значение malloc на NULL│
│ │
╰───────────────────────────────────────────────────────────╯
Форматы вывода¶
| Формат | Описание | Применение |
|---|---|---|
| –format md | Markdown | Документация, GitHub |
| –format json | JSON | Интеграция с CI/CD |
| –format yaml | YAML | Конфигурация |
Параметры проверки¶
# Базовая проверка
/review git
# С указанием формата
/review git --format json
# С встроенными комментариями
/review git --inline
# Комбинированный вариант
/review github 123 --format md --inline
CPG-анализ при проверке кода¶
Сценарий проверки кода использует CPG (граф свойств кода) для автоматического анализа:
Оценка риска изменений¶
Каждый изменённый метод получает оценку риска (0.0–1.0) на основе 4 факторов:
| Фактор | Описание |
|---|---|
| Количество вызывающих | Чем больше вызывающих, тем шире влияние |
| Сложность сигнатуры | Количество параметров |
| Расположение в ядре | Доменные плагины и базовые сервисы |
| Интерфейсный слой | +0.15 если метод в CLI/API/TUI/MCP/ACP |
Уровни: critical (≥0.8), high (≥0.6), medium (≥0.4), low (<0.4).
Обнаружение влияния на интерфейсы¶
При изменении файлов в интерфейсных слоях проверка кода определяет, какие интерфейсы затронуты:
Интерфейсные слои:
CLI → src/cli/
REST API → src/api/routers/
TUI → src/tui/commands/
MCP → src/mcp/tools/, src/mcp/
ACP → src/acp/server/, src/acp/
Реальный анализ git diff¶
Обработчик PRImpactHandler извлекает изменённые файлы через git diff --name-only {base_ref} HEAD для точного анализа зоны поражения. Поддерживаемые расширения: .py, .go, .ts, .js, .c, .h, .java, .kt, .cs, .php.
Транзитивный анализ вызывающих¶
CallerAnalysis выполняет 2-hop транзитивный поиск: находит не только прямых вызывающих изменённых методов, но и вызывающих вызывающих – для оценки полной зоны поражения.
Связанные сценарии¶
- Аудит безопасности — Глубокий анализ безопасности
- Покрытие тестами — Анализ покрытия кода тестами
- Рефакторинг — Качество кода
- Композитные рабочие процессы — Оркестрация сценариев
- Интеграция Claude Code и Git — Хуки проверки кода