Перейти к содержимому

AI code review и рефакторинг 2026: Claude Code, Copilot, CodeRabbit, Cursor — обзор стека

Автор: Silvana · Дата: 10.08.2026 · Verified: 01.09.2026 · Reading time: 27 минут · Prerequisite: понимание code review процесса, базовое знакомство с git

AI code review в 2026 ловит паттерны: копипаст, неиспользуемый код, устаревшие API, типовые баги (N+1, injection, race conditions) — но слабее с бизнес-логикой и архитектурой. Рабочий стек: Claude Code как основной агент для PR-ревью и рефакторинга, GitHub Copilot Workspace для авто-PR, CodeRabbit и Qodo Merge как специализированные PR-агенты, Cursor и Windsurf для интерактивной работы в редакторе. AI подходит для «первого прохода» — освобождает время человека для существенного (архитектура, компромиссы, бизнес-контекст). Ниже — как встроить в CI и что делегировать AI, а что оставить ревьюверу.

  • AI ловит паттерны: копипаст, неиспользуемый код, устаревшие API, типичные баги (N+1, injection, race conditions). Слабее с бизнес-логикой и архитектурой.
  • Стек 2026: Claude Code как основной агент для code review в PR и рефакторинга в проекте. GitHub Copilot Workspace для авто-PR. Cursor и Windsurf — для интерактивного рефакторинга в редакторе. CodeRabbit, Qodo Merge (бывший PR-Agent) — специализированные PR-агенты.
  • Code review AI подходит для «первого прохода» — находит очевидное, освобождая время человека для существенного (архитектура, компромиссы, бизнес-контекст).
  • Рефакторинг AI подходит для механических задач: renaming, extract function, move method, замена deprecated API. Для архитектурных изменений — только совместно с человеком.
  • Автоматизация в CI: PR получает автоматическое AI-ревью в течение пару минут после открытия. Разработчик уже видит критические замечания до human-review.
  • Работает из России: локальные инструменты (Cursor, Cline) с локальными моделями (Codestral, DeepSeek Coder) — без иностранных подписок. Cloud-инструменты (Claude, GPT) требуют иностранного аккаунта.

Хорошо:

  • Находить пропущенные обработки ошибок (try/except без обработки, missing return в error path).
  • Обнаруживать неиспользуемые импорты, переменные, функции.
  • Предлагать современные API взамен deprecated (например, datetime.utcnow()datetime.now(timezone.utc)).
  • Ловить потенциальные баги: N+1 SQL-запросы, race conditions в async-коде, off-by-one в циклах.
  • Проверять базовую безопасность: SQL injection, XSS, secrets в коде, path traversal.
  • Оценивать читабельность: слишком длинные функции, слишком глубокая вложенность, магические числа.
  • Соблюдение стиля проекта, если ты дал CLAUDE.md/rules-файл с конвенциями.
  • Дублирование кода (copy-paste в разных файлах).
  • Проверку соответствия test coverage изменённому коду.
  • Отсутствие тестов на новую функциональность — про сам паттерн см. AI для тестирования кода.

Средне (нужен человеческий надзор):

  • Логические ошибки в бизнес-логике. AI не знает, что «скидка не применяется к товарам X категории» — если это не описано в CLAUDE.md, он пропустит нарушение.
  • Производительность за пределами очевидного. AI ловит N+1, но не всегда видит memory leak в сложном lifecycle React-компонента.
  • Concurrent bugs. Deadlock, livelock, race conditions в multi-threaded коде — AI даёт базовые предупреждения, но не гарантирует полноту.
  • Архитектурные проблемы. «Этот класс делает слишком много» — AI заметит длину, но не всегда — концептуальную проблему.
  • Изменения в public API. Breaking changes — AI пропустит, если не указать явно, где public boundaries.

Плохо (не полагайся):

  • Оценка бизнес-компромиссов. «Стоит ли эта фича сложности?» — не задача AI.
  • Приоритизация замечаний. AI даст 20 замечаний с одинаковой важностью, тебе выбирать критичные.
  • Понимание intent. Если код написан странно, но специально — AI предложит «улучшить», не осознавая, что это workaround для конкретного бага.
  • Проверка производительности с реальными данными. AI не запускает бенчмарки, он анализирует статически.
  • Соответствие юридическим требованиям, compliance, регуляторным нормам.

Стек 2026: инструменты AI-ревью и рефакторинга

Заголовок раздела «Стек 2026: инструменты AI-ревью и рефакторинга»

Claude Code (code.claude.com/docs/en/overview, проверено 10.08.2026) — CLI-агент для полноценного code review на уровне репозитория. Есть bundled skill /code-review. Пример команды:

Окно терминала
claude "Review the diff between main and current branch. Check for security issues,
logic bugs, style violations against CLAUDE.md. Post findings as GitHub PR comments."

Читает все файлы, применяет чек-лист, публикует комментарии через GitHub CLI или MCP-сервер.

GitHub Copilot Workspace (docs.github.com/copilot) — автономный агент, работает через GitHub issues и PR. Может открывать PR по описанию, ревьюить существующие PR, предлагать fixes.

Cursor Composer (docs.cursor.com) — интерактивный режим в редакторе. Выделяешь функцию, просишь отрефакторить — Cursor предлагает изменения с diff-view.

Windsurf Cascade (docs.windsurf.com) — аналог Cursor Composer. Автономный агент, работает с несколькими файлами одновременно.

Cline (github.com/cline/cline) — open source агент в VS Code. Работает с любым LLM через API (Claude, GPT, локальные модели через Ollama).

CodeRabbit (coderabbit.ai) — специализированный PR-агент. Автоматический review в GitHub, GitLab, Azure DevOps. Комментирует построчно, интегрируется в review workflow.

Qodo Merge (бывший CodiumAI PR-Agent, github.com/qodo-ai/pr-agent) — open source PR-агент. Работает через GitHub Actions или self-hosted. Триггерится комментариями в PR (/review, /describe, /improve).

Sourcery (sourcery.ai) — специализация на рефакторинге Python и JS. Автоматические предложения по улучшению кода.

DeepCode by Snyk — фокус на security review, находит уязвимости через AI-анализ.

Специализированные для конкретных языков:

  • Semgrep + AI (semgrep.dev) — статический анализ + AI-объяснения проблем.
  • SonarQube + AI features — enterprise-инструмент с AI-powered code smell detection.

Шаг 1: настройка CLAUDE.md с review-правилами.

В корне проекта — файл, где описаны критерии ревью:

# Project Review Checklist
## Security (blockers)
- No secrets in code (grep for common patterns)
- SQL queries parametrized (no string concatenation)
- User input validated before processing
- No path traversal in file operations
- HTTPS-only for external calls
## Logic
- All exception paths handled
- No silent catches (except Exception: pass)
- Return types match declared
- Async functions have await where needed
## Performance
- No N+1 SQL queries
- No blocking IO in async code
- Redis/DB connections not leaked
- Large loops have complexity comment
## Style
- Type hints on all new code
- Docstrings for public API
- snake_case for Python, camelCase for TS
- ruff format compliant
## Tests
- New public functions have tests
- Bug fixes have regression test
- Coverage did not decrease

Шаг 2: skill для review.

Создай .claude/skills/review-pr/SKILL.md (только description обязателен; полный формат — code.claude.com/docs/en/skills):

---
description: Полное code review текущего PR по проектному чек-листу
allowed-tools: Bash Read WebFetch
---
## Steps
1. Get PR context via `gh pr view --json title,body,files`.
2. Get diff via `gh pr diff`.
3. Read CLAUDE.md and any linked docs.
4. For each changed file:
- Read the file
- Check against Security, Logic, Performance, Style, Tests sections
- Note file:line for each finding
5. Categorize findings: critical, high, medium, low.
6. Post summary comment via `gh pr comment`.
7. If any critical → `gh pr review --request-changes -b "..."`
Else if any high → `gh pr review --comment -b "..."`
Else → `gh pr review --approve -b "..."`
## Output format
Summary comment:
- Overall status
- Critical findings (with file:line)
- High findings
- Medium/low findings (grouped)
- Suggestions for improvement

Шаг 3: запуск.

Окно терминала
cd project
git checkout feature/new-endpoint
claude "/review-pr"

Claude Code выполнит все шаги, опубликует комментарий в GitHub.

Шаг 4: CI-интеграция.

GitHub Action:

name: claude-review
on:
pull_request:
types: [opened, synchronize, ready_for_review]
jobs:
review:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "/review-pr"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Каждый non-draft PR получает автоматическое ревью в течение пару минут.

Специализированные PR-агенты: CodeRabbit, Qodo Merge

Заголовок раздела «Специализированные PR-агенты: CodeRabbit, Qodo Merge»

CodeRabbit — SaaS для автоматического PR-ревью. Официальная документация: docs.coderabbit.ai.

Особенности:

  • Инлайн-комментарии на конкретных строках.
  • Резюме PR: что делает, какие файлы затронуты, риски.
  • Chat в PR: можно задавать вопросы про изменения.
  • Обучается на команде: со временем подстраивается под ваши конвенции.

Установка: через GitHub Marketplace, включаешь для репозитория, работает автоматически.

Цена: тарифы и текущий Free tier сверяй на coderabbit.ai/pricing (проверено 10.08.2026) — цифры меняются часто.

Qodo Merge (PR-Agent) — open source альтернатива. Репозиторий: github.com/qodo-ai/pr-agent.

Особенности:

  • Триггерится комментариями: /review, /describe, /improve, /ask.
  • Self-hosted через GitHub Actions или Docker.
  • Работает с OpenAI, Anthropic, локальными моделями (через LiteLLM).
  • Бесплатный, поддерживается сообществом.

Пример setup через GitHub Action:

name: qodo-merge
on:
pull_request:
types: [opened]
issue_comment:
types: [created]
jobs:
pr_agent:
if: ${{ github.event.sender.type != 'Bot' }}
runs-on: ubuntu-latest
steps:
- uses: qodo-ai/pr-agent@main
env:
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Триггер по комментарию /review в PR — агент прогонит ревью, опубликует ответ.

Хороший чек-лист — залог качественного AI-ревью. Ниже — работающие чек-листы по категориям.

Security checklist:

1. Секреты в коде
- Есть ли hardcoded API keys, passwords, tokens?
- .env файлы под git?
- Логирование не выводит secrets?
2. Injection
- SQL-запросы параметризованы (не f-strings, не format)?
- HTML-вывод escapes user input?
- Shell-команды не собираются из user input?
- Deserialization (pickle, YAML.load) — только trusted data?
3. Authentication & Authorization
- Каждый защищённый endpoint проверяет auth?
- Роли и permissions проверяются на backend, не только UI?
- JWT/сессии validate signature перед trust?
4. Data exposure
- API-ответы не включают лишних полей (password_hash, internal IDs)?
- Логи не выводят PII (email, phone, address)?
- Error messages не разглашают structure (stack trace в prod)?
5. External calls
- HTTPS-only?
- Timeouts настроены?
- Certificate validation не отключён?
- Retry без exponential backoff (может DDoS)?
6. Dependencies
- Новые зависимости проверены на known CVE?
- Версии pinned (не ^, не *)?
- Lock-файл обновлён консистентно?

Performance checklist:

1. Database
- N+1 запросы? (loop с queries внутри)
- Индексы для новых query patterns?
- LIMIT в пагинациях?
- SELECT * заменён на конкретные поля?
2. Async
- await в правильных местах?
- blocking IO (open, requests) вне async?
- Connection pools не пересоздаются на каждый запрос?
3. Memory
- Большие структуры (>10k items) обрабатываются потоково?
- Файлы стримятся, не читаются целиком?
- Кэши имеют TTL и максимальный размер?
4. Caching
- Cache key включает все влияющие параметры?
- Cache invalidation при mutation?
- Stale-while-revalidate где применимо?
5. Frontend (JS/TS)
- Компоненты не re-render'ятся без причины (React memo/useMemo)?
- Bundle-size не вырос значительно?
- Images optimized (webp/avif, lazy load)?

Logic checklist:

1. Error handling
- Все exception paths обработаны?
- Нет silent catches (except: pass)?
- Ошибки логируются с контекстом?
- Rollback на транзакциях при ошибке?
2. Edge cases
- Пустые массивы/строки обрабатываются?
- Null/None checks где ожидается?
- Overflow для больших чисел?
- Timezone-aware datetime?
3. Concurrency
- Race conditions в async?
- Locks/mutexes где нужно?
- Idempotency для повторных запросов?
4. Backward compatibility
- Breaking changes в public API?
- Миграции backward-совместимы?
- Feature flags для постепенного rollout?

Style & maintainability:

1. Naming
- Понятные имена (не x, tmp, data)?
- Согласованность (snake_case Python, camelCase JS)?
2. Complexity
- Функции < 50 строк?
- Cyclomatic complexity < 10?
- Вложенность < 4 уровней?
3. Documentation
- Public API имеет docstrings?
- Комментарии объясняют "почему", не "что"?
- README обновлён при новых фичах?
4. Tests
- Новый public код имеет тесты?
- Coverage не упал?
- Bug fixes имеют regression test?

Такой чек-лист можно положить в .claude/checklists/review.md и ссылаться из skill’а:

Прочитай .claude/checklists/review.md.
Пройди по каждому пункту для файлов, изменённых в PR.
Отметь pass/fail/n/a. Приведи file:line для fails.

AI хорошо справляется с механическими рефакторингами. Список подходящих задач:

1. Rename. Переименование переменной, функции, класса, файла. AI находит все использования, обновляет корректно (не путает с одноимёнными в других контекстах, если есть type info).

Пример промпта:

Переименуй функцию calculate_price в src/services/pricing.py в compute_final_price.
Обнови все использования в проекте. Обнови docstring, обновляй импорты.
Проверь, что тесты продолжают проходить.

2. Extract function. Выделение части функции в отдельную функцию с явным контрактом.

В функции process_order в src/services/order.py логика применения скидок
(строки 50-90) сложная. Выдели её в отдельную функцию apply_discounts(order, user).
Функция принимает order и user, возвращает Decimal (сумма скидки).
Убедись, что тесты продолжают проходить.

3. Extract method. Аналогично extract function, но для методов класса.

4. Inline. Встраивание короткой функции в место вызова.

5. Extract class. Выделение группы связанных методов/полей в отдельный класс.

6. Move method / function. Перенос функции в более подходящий модуль.

7. Replace magic numbers with constants. Замена литералов на именованные константы.

В src/services/pricing.py есть магические числа: 0.15, 0.20, 500, 1000, 30.
Замени их на именованные константы в начале файла с комментариями,
что они означают. Обнови все использования.

8. Replace loop with comprehension / built-in. Замена ручных циклов на pythonic конструкции.

9. Replace nested conditionals with guard clauses. Уменьшение вложенности через early returns.

10. Replace mutable state with immutable. Замена мутирующих операций на функциональный стиль.

11. Introduce parameter object. Группировка длинного списка параметров в dataclass/interface.

12. Simplify boolean expressions. Упрощение сложной логики через De Morgan, извлечение predicate функций.

13. Update deprecated APIs. Замена устаревших вызовов на современные (Python datetime.utcnow()datetime.now(timezone.utc), JS callbacks → async/await).

14. Migrate between libraries. Одна ORM на другую, jest → vitest, moment → date-fns.

1. Архитектурные изменения. «Разбить монолит на микросервисы» — AI не знает, где границы, какие данные разделять, как оркестрировать. Ты декомпозируешь, AI помогает с механикой каждого шага.

2. Изменение основных абстракций. Заменить наследование на композицию, event-driven на request-response — требует понимания системы в целом.

3. Оптимизация производительности за пределами очевидного. «Ускорить эту функцию в 10 раз» — AI пробует стандартные приёмы (кэш, batching), но алгоритмические прорывы редко.

4. Изменения, требующие изменения нескольких систем. Обновление schema БД + бэкенда + фронтенда + документации + тестов + миграции данных — координация на AI не работает.

5. Изменения с влиянием на compatibility. «Обновить контракт API v1 → v2» — какие поля deprecated, какие удалить, какие переименовать, как поддерживать оба — решение бизнесово-архитектурное.

Шаг 1: описание задачи с явным scope.

Задача: рефакторинг функции process_order в src/services/order.py.
Проблемы:
- Функция 200 строк, делает 5 разных вещей
- Nested try/except на 4 уровня
- Магические числа (0.15, 500, 1000)
- Логика скидок, начисления баллов, отправки нотификаций смешана
Цели:
- Разбить на 4-5 функций с одной ответственностью
- Магические числа в модульные константы
- Логика скидок — отдельный модуль src/services/discounts.py
- Начисление баллов — отдельный модуль src/services/loyalty.py
- Нотификации — оставить в order.py, но выделить в функцию notify_order_processed
Ограничения:
- Сигнатура process_order не меняется (backward compat)
- Все существующие тесты продолжают работать
- Никаких новых зависимостей
- Коммит на каждый шаг рефакторинга
Workflow:
1. Прочитай текущий код и тесты.
2. Составь план: что куда переносим, порядок шагов.
3. Дождись моего подтверждения плана.
4. Выполняй шаг за шагом. После каждого — запускай тесты. Если fail — стоп, объясни.

Шаг 2: план от AI.

Claude Code вернёт что-то вроде:

План рефакторинга:
Шаг 1: Извлечь константы.
- В src/services/order.py: DISCOUNT_RATE = 0.15, LOYALTY_THRESHOLD = 500, ...
- Обновить все использования.
- Тесты должны пройти без изменений.
Шаг 2: Выделить discounts.
- Создать src/services/discounts.py с функцией apply_discounts(order, user) -> Decimal.
- Перенести логику из process_order.
- В process_order оставить вызов apply_discounts(order, user).
- Тесты должны пройти.
Шаг 3: Выделить loyalty.
- Создать src/services/loyalty.py с функцией award_loyalty_points(user, order).
- Перенести логику.
- В process_order — вызов.
- Тесты должны пройти.
Шаг 4: Извлечь notify_order_processed.
- В src/services/order.py — новая функция.
- Тесты должны пройти.
Шаг 5: Финальный рефакторинг process_order.
- Функция теперь ~50 строк, читаемая последовательность вызовов.
- Тесты должны пройти.
Готово. Итог: 4 файла (order.py обновлён, discounts.py новый, loyalty.py новый, тесты не тронуты).
Подтвердить план? (y/n)

Шаг 3: пошаговое выполнение.

После твоего y Claude Code выполняет шаг за шагом. На каждом:

  1. Показывает diff.
  2. Применяет.
  3. Запускает тесты.
  4. Если pass — коммитит с descriptive message.
  5. Если fail — стоп, показывает ошибку, ждёт.

Шаг 4: финальный ревью.

После завершения:

Рефакторинг завершён.
Итоги:
- src/services/order.py: 200 → 55 строк
- src/services/discounts.py: новый, 45 строк
- src/services/loyalty.py: новый, 30 строк
- 5 коммитов в git log
Тесты: 234 passed, 0 failed (без изменений).
Coverage: 91% → 92% (незначительный рост).
Готов ответить на вопросы или сделать дополнительные улучшения.

Твоя роль: проверить финальный результат, поревьюить diff, при необходимости — попросить корректировки.

Автоматизация рефакторинга: авто-fix и quick fixes

Заголовок раздела «Автоматизация рефакторинга: авто-fix и quick fixes»

Некоторые рефакторинги можно автоматизировать до уровня «нажми кнопку — применилось».

1. Ruff с —fix (Python).

Окно терминала
ruff check --fix .

Автоматически исправляет: неиспользуемые импорты, лишние parentheses, deprecated API, некоторые стилистические. Не требует AI.

2. eslint —fix (JS/TS).

Окно терминала
eslint --fix src/

Аналогично: форматирование, простые replacement rules.

3. Cursor Quick Fix.

В Cursor выделяешь код, нажимаешь Cmd+K, пишешь короткую команду:

Replace nested if with guard clauses.

Cursor предлагает diff, ты подтверждаешь.

4. Claude Code inline refactoring.

В интерактивной сессии:

Отрефактори функцию parse_user в src/models/user.py:
- Замени nested try/except на явную валидацию
- Используй pydantic ValidationError
- Тесты должны продолжать проходить

Claude Code делает изменения, показывает diff, ты подтверждаешь.

5. GitHub Copilot Chat inline.

В VS Code выделяешь блок кода, вызываешь Copilot Chat:

/refactor: extract this into a separate function

Copilot предлагает вариант.

Copy-paste — типичная проблема. AI хорошо её ловит.

Промпт:

Прочитай файлы:
- src/api/users.py
- src/api/products.py
- src/api/orders.py
Найди дублирующиеся паттерны кода (валидация auth, формирование responses,
обработка ошибок). Если есть повторение >= 3 раз — предложи, куда вынести
общую функцию/декоратор/utility.
Ответ:
1. Список дублирований с file:line
2. Предложение архитектуры (куда вынести)
3. Пример рефакторинга для одного случая

Claude Code проанализирует, найдёт паттерны, предложит src/utils/api_helpers.py с общими функциями. Дальше ты решаешь — применить или обсудить.

Инструменты для автоматической детекции дублирования:

  • jscpd (github.com/kucherenko/jscpd) — для JS/TS/Python и других.
  • PMD Copy-Paste Detector — для Java.
  • flake8-copy-paste-detector — плагин для flake8.
  • pylint —enable=duplicate-code — встроено в pylint.

Комбинация: инструмент находит места, AI предлагает рефакторинг.

Типичная задача: обновить весь проект с использования устаревшего API на новый.

Пример: Python datetime.

Python 3.13 сделал datetime.utcnow() deprecated, рекомендует datetime.now(timezone.utc).

Промпт:

Найди все использования datetime.utcnow() в проекте.
Замени на datetime.now(timezone.utc).
Убедись, что import timezone добавлен.
Проверь, что тесты, которые сравнивают dt-объекты, продолжают работать.
Коммить одной атомарной pull request'ой.

Claude Code выполнит:

  1. grep -r "utcnow()" src/ — найдёт все места.
  2. Прочитает каждый файл.
  3. Заменит datetime.utcnow()datetime.now(timezone.utc).
  4. Добавит import from datetime import timezone, если отсутствует.
  5. Запустит тесты.
  6. Если pass — коммитит.

Если fail — покажет, где сломалось, ждёт указаний.

Другие типичные миграции:

  • Python: os.pathpathlib, print statement → print() function, unittestpytest.
  • JS: callbacks → Promises → async/await, varconst/let, requireimport.
  • React: class components → function components + hooks.
  • SQLAlchemy 1.x → 2.x (изменение API queries).
  • FastAPI старая → новая (Pydantic v1 → v2).

Все хорошо поддаются AI-миграциям при чётком описании цели.

Пайплайн 1: AI-review каждого PR.

name: ai-review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Ревью PR по чек-листу в .claude/checklists/review.md.
Опубликуй inline-комментарии на конкретных строках.
Общее summary — в общем комментарии.

Пайплайн 2: авто-fix линт-ошибок.

name: auto-lint-fix
on:
pull_request:
types: [opened, synchronize]
jobs:
lint-fix:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Run ruff --fix
run: |
pip install ruff
ruff check --fix .
- name: Commit changes
run: |
git config user.name "ai-bot"
git config user.email "bot@example.com"
git add .
git diff --cached --quiet || git commit -m "chore: auto-fix lint issues"
git push

Пайплайн 3: security scan с AI-объяснениями.

name: security-scan
on:
push:
branches: [main]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run bandit
run: |
pip install bandit
bandit -r src/ -f json -o bandit-report.json
- uses: anthropics/claude-code-action@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Прочитай bandit-report.json.
Для каждой находки:
- Объясни, что за уязвимость (простым языком).
- Оцени риск в контексте проекта.
- Предложи fix.
Создай GitHub issue со сводкой.

Пайплайн 4: dependency-аудит с AI.

name: deps-audit
on:
schedule:
- cron: '0 9 * * 1' # каждый понедельник в 9:00
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check outdated
run: pip list --outdated --format=json > outdated.json
- uses: anthropics/claude-code-action@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
outdated.json — список устаревших пакетов.
Для каждого:
- Оцени риск обновления (major/minor/patch)
- Проверь changelog (через web search) на breaking changes
- Категоризируй: safe to update / needs testing / manual review
Создай PR с обновлением safe пакетов.

Если по каким-то причинам не можешь использовать cloud AI (compliance, cost, доступность), локальные модели дают базовое качество для code review и рефакторинга.

Инструменты:

  • Ollama (ollama.com/docs) — простой запуск локальных моделей. ollama run codellama:34b.
  • LM Studio (lmstudio.ai) — GUI для локальных моделей.
  • Cline (github.com/cline/cline) — VS Code расширение, работает с Ollama, OpenAI-compatible API.
  • Continue.dev (github.com/continuedev/continue) — альтернатива Cline, тоже поддерживает локальные модели.

Модели для кода:

  • Codestral 22B (Mistral) — сильный универсальный код-код, работает через Ollama.
  • DeepSeek Coder 33B — специализация на коде, хороший на рефакторинге.
  • Qwen 2.5 Coder 32B — от Alibaba, сильная производительность на кодовых бенчмарках.
  • Llama 3.3 70B — общего назначения, хорошо на кодовых задачах.

Требования к железу:

  • 22B модели — 32GB RAM, GPU с 24GB VRAM (RTX 3090/4090).
  • 33B модели — 48GB RAM или квантизация до Q4.
  • 70B модели — 64GB+ RAM или GPU с 48GB VRAM.

Локальные модели дают качество ~около 75% от Claude/GPT на типичных задачах. Для критичного кода — комбинация: локальная модель для первого прохода, cloud для финального ревью.

Best practices: как эффективно использовать AI-review

Заголовок раздела «Best practices: как эффективно использовать AI-review»

1. Не полагайся на AI как на единственный ревьюер. AI ловит очевидное, человек — контекст, компромиссы, стратегию. Combined review — лучший подход.

2. Держи чек-лист в проекте. .claude/checklists/review.md — эволюционирует со временем, отражает специфику проекта.

3. Триаж AI-замечаний. Из 20 замечаний AI 15 могут быть nitpick или ложные срабатывания. Ревьюер (человек или senior AI-агент) выбирает критичные.

4. Обучайся на ложных срабатываниях. Если AI регулярно ошибается на определённом паттерне — добавь в CLAUDE.md исключение или уточнение.

5. Комбинируй инструменты. Semgrep находит security-паттерны, AI объясняет и оценивает риск. Ruff чинит стиль, AI ревьюит логику. Каждый инструмент — на своей задаче.

6. AI для «первого прохода». Автоматический AI-review открывает PR в течение 2 минут. Разработчик видит замечания раньше, чем ревьюер-человек взглянет. Экономия времени человека.

7. Не мержи авто-fix без ревью. Даже безопасные автозамены (ruff —fix) требуют проверки — иногда они меняют семантику.

8. Explain, don’t just fix. AI должен объяснять, почему предлагает изменение. «Использовать X вместо Y» — плохо. «Использовать X вместо Y, потому что Y deprecated с версии Z» — хорошо.

9. Мониторь качество ревью. Раз в квартал: сколько AI-замечаний оказались корректными? Сколько ложных? Если noise > signal — тюнь чек-лист.

10. Секьюрность прежде всего. Не давай AI-агенту полные права на репозиторий. Read + write в специальные ветки — да, direct push to main — нет.

Может ли AI полностью заменить код-ревьюера?

Заголовок раздела «Может ли AI полностью заменить код-ревьюера?»

Нет. AI хорошо ловит очевидные проблемы: секреты в коде, N+1 запросы, deprecated API, стилистику. Не заменяет человека в оценке архитектуры, бизнес-логики, компромиссов, приоритетов. Combined review (AI первый проход + человек ключевые замечания) — оптимально.

Зависит от бюджета и требований. Claude Code через GitHub Action — гибко, кастомизируемо, стоит денег на токены. CodeRabbit — специализированный SaaS, легко подключить, платно. Qodo Merge — open source, self-hosted, бесплатно, требует настройки. Копайлот Workspace — если ты в GitHub-экосистеме.

Как ревьюить сгенерированные AI изменения?

Заголовок раздела «Как ревьюить сгенерированные AI изменения?»

Как обычный PR. Проверяй: код действительно делает, что нужно (не placeholder); соответствует стилю проекта; тесты проходят; изменения минимальны (AI иногда переписывает больше, чем нужно); нет breaking changes без обсуждения. AI-generated ≠ auto-approved.

Как AI помогает с рефакторингом legacy-кода?

Заголовок раздела «Как AI помогает с рефакторингом legacy-кода?»

Работает по шагам. Даёшь функцию/модуль, описываешь проблемы (длинная, вложенная, магические числа), указываешь цели, требуешь план перед действием. AI разбирает, предлагает план, ты подтверждаешь, выполняет с проверкой тестов после каждого шага. Для больших миграций — worktree + background agent.

AI сгенерировал рефакторинг, тесты проходят — можно ли мержить?

Заголовок раздела «AI сгенерировал рефакторинг, тесты проходят — можно ли мержить?»

Проходят ≠ правильно. Тесты покрывают ограниченный набор случаев. Ревьюй ручно: логика неизменна? Публичные API не сломаны? Coverage не упал? Performance не деградировала (для чувствительных участков — бенчмарк)? Если сомневаешься — второй ревьюер (человек), пятница пятиминутки.

Как обучить AI понимать конвенции моей команды?

Заголовок раздела «Как обучить AI понимать конвенции моей команды?»

Через файлы правил. CLAUDE.md для Claude Code, .cursorrules для Cursor, .windsurfrules для Windsurf. Пиши явно: naming, стиль, что мокать, где fixtures, антипаттерны команды. Плюс — примеры хорошего и плохого кода в промптах. Со временем AI подстраивается.

Стоит ли использовать AI для критичного кода (payments, auth)?

Заголовок раздела «Стоит ли использовать AI для критичного кода (payments, auth)?»

Только как helper, не как автомат. AI может пропустить subtle security issue. Комбинация: специализированные security-инструменты (Snyk, Semgrep, Bandit) + AI для объяснений + human review. Никакого auto-merge без человека.

Локальные инструменты (Semgrep, Bandit, Ruff, ESLint) — без ограничений. Cloud AI (Claude, GPT) — нужен иностранный аккаунт. Локальные модели через Ollama (Codestral, DeepSeek Coder, Qwen Coder) — работают локально, качество ниже cloud, но приемлемо для базового ревью. Российские альтернативы (YandexGPT, GigaChat) работают, качество на кодовых задачах ниже, чем у топовых cloud моделей.

Метрики. Первое: сколько багов ловится в AI-review vs human-review vs prod (bugs escaped). Второе: сколько ложных срабатываний (false positive rate). Третье: время до первого фидбека на PR (AI review в пару минут vs human review в часы-дни). Четвёртое: количество changed lines между AI-review и merge (сколько правок принято).

Что делать, если AI-ревью даёт слишком много замечаний?

Заголовок раздела «Что делать, если AI-ревью даёт слишком много замечаний?»

Тюнь чек-лист. Убирай nitpick’и (форматирование — оставь линтеру, не AI). Ограничивай scope (только security и logic, не style). Приоритизируй в промпте: «critical first, low priority в отдельной секции». Раз в спринт — просматривай AI-замечания за неделю, отмечай ложные срабатывания, обновляй правила.

Как AI помогает с рефакторингом при обновлении major-версии зависимости?

Заголовок раздела «Как AI помогает с рефакторингом при обновлении major-версии зависимости?»

Даёшь ссылку на migration guide зависимости (например, SQLAlchemy 1 → 2). AI читает guide, находит паттерны в твоём коде, применяет замены. Хорошо работает для мигаций с чёткими правилами. Для тонких breaking changes (изменение поведения без изменения API) — ручной ревью каждого места.

Стоит ли автоматизировать применение AI-fixes?

Заголовок раздела «Стоит ли автоматизировать применение AI-fixes?»

Осторожно. Fixes на форматирование (ruff —fix, eslint —fix) — безопасно, автомат ok. Fixes на deprecated API — обычно безопасно, но проверяй. Fixes на logic — только через PR с человеческим ревью. Общее правило: если изменение меняет behaviour, не автомерж.

Как AI помогает с code-review в micro-service архитектуре?

Заголовок раздела «Как AI помогает с code-review в micro-service архитектуре?»

Каждый сервис — отдельный репозиторий с своим CLAUDE.md. AI ревьюит изменения в контексте одного сервиса. Проблемы cross-service (breaking API changes) требуют дополнительной автоматизации: контракт-тесты (Pact, Spring Cloud Contract), OpenAPI diff-инструменты, alerting при изменении shared schema. AI помогает генерить контракт-тесты, но координацию делает архитектор.

Как отличить AI-ревью от человеческого в PR?

Заголовок раздела «Как отличить AI-ревью от человеческого в PR?»

Помечай явно. Комментарии от AI — с префиксом [AI-review] или через отдельный bot-account. Люди видят, что это автоматика, могут оценить по-другому. Практика: AI review как первый комментарий, human review — второй с уточнениями/опровержениями.

Да, много. GitHub Copilot и Claude Code имеют дефолтные чек-листы. OWASP публикует security-чек-листы. Стандарты Google, Airbnb, Microsoft — открытые, можно взять за основу. Но универсального «идеального» чек-листа нет — нужно адаптировать под свой стек и проект.

Bundled skill /code-review уже встроен и работает без настройки — вызов /code-review в интерактивной сессии запускает ревью текущего diff. Кастомизация — через локальный skill .claude/skills/code-review/SKILL.md, который переопределяет bundled. Frontmatter требует только description; в теле пропиши свой чек-лист и шаги. Пример настройки — code.claude.com/docs/en/code-review (проверено 10.08.2026). Для чек-листа отдельно — можно вынести в .claude/checklists/review.md и ссылаться из SKILL.md.

Актуально на 10.08.2026. Инструменты и цены меняются часто. Перед бизнес-решением всегда сверяйся с первоисточником — все ссылки в разделе Sources ниже.