SpyBara
Go Premium

code-review-pull-requests.md 2026-10-15 23:58 UTC to 2026-10-16 22:59 UTC

No changes for this document in this history range.

2026
Thu 15 23:58 Tue 20 23:00 Wed 21 23:02 Thu 22 22:58 Fri 23 22:59 Sun 25 23:58

Чтение результатов и запрос ревью для pull request

Читайте результаты Code Review в вашем pull request на GitHub, отвечайте на них или отклоняйте их, а также запрашивайте ревью с помощью @claude review.

Code Review — это управляемый сервис, который Owner в вашей организации Claude включает для набора репозиториев GitHub. После включения Claude проводит ревью pull request в этих репозиториях и публикует свои результаты в виде встроенных комментариев, сводки в теле ревью и check run с именем Claude Code Review. Ревью никогда не одобряет и не блокирует ваш pull request, а check run никогда не завершается со статусом failure.

Owner управляет тем, когда запускаются ревью и насколько они тщательны, для каждого репозитория.

Уровни серьёзности

Claude публикует каждый результат в виде встроенного комментария к соответствующим строкам и помечает его одним из трёх уровней серьёзности:

Маркер Серьёзность Значение
🔴 Important Ошибка, которую следует исправить перед слиянием
🟡 Nit Незначительная проблема, которую стоит исправить, но она не блокирует
🟣 Pre-existing Ошибка, которая существует в кодовой базе, но не была внесена этим PR

Если ревью зафиксировало свои рассуждения, у результата есть свёрнутый раздел Why this was flagged. Разверните его, чтобы узнать, почему Claude пометил проблему и как он её проверил.

Чтобы изменить, что Claude помечает в вашем репозитории или как он оценивает серьёзность, см. Настройка Code Review.

Ответ на результаты

Вы можете выполнить слияние, не отвечая на результат, если только собственные правила вашего репозитория не требуют этого. Если защита ветки требует разрешения обсуждений, разрешите ветку обсуждения каждого результата перед слиянием.

Чтобы закрыть результат, разрешите его ветку обсуждения или отправьте исправление.

  • Отклонить без изменения кода: разрешите ветку обсуждения самостоятельно на GitHub. Одного ответа недостаточно, чтобы отклонить результат.
  • Исправить проблему: измените код и выполните push. Следующее ревью pull request разрешит прежнюю ветку обсуждения, если сочтёт проблему исправленной, — независимо от того, запускается ли это ревью автоматически при push или вы запрашиваете его сами.
  • Объяснить или не согласиться: ответьте на комментарий. Claude не отвечает сразу, и ответ не запускает ревью. Следующее ревью pull request читает ответы на свои прежние результаты и может разрешить ветку обсуждения или опубликовать один ответный комментарий. Если один и тот же тип результата постоянно возвращается, попросите сопровождающего добавить правило в REVIEW.md.

Чтобы получить это следующее ревью без push, оставьте @claude review в виде комментария верхнего уровня к pull request.

Вывод check run

Ссылка Details в check run Claude Code Review открывает результаты в одной таблице, отсортированной по серьёзности, включая любые результаты, встроенные комментарии к которым GitHub не принял:

Серьёзность Файл:Строка Проблема
🔴 Important src/auth/session.ts:142 Обновление токена конкурирует с выходом из системы, из-за чего устаревшие сессии остаются активными
🟡 Nit src/auth/session.ts:88 parseExpiry молча возвращает 0 при некорректных входных данных

Результат, у которого есть строка, но который не был опубликован как встроенный комментарий, отображается как аннотация на вкладке Files changed у соответствующих строк. Результаты Important отображаются красным, nit — жёлтым, а pre-existing ошибки — серым.

Check run завершается со статусом neutral или skipped, если автоматическое ревью не запускалось, потому что push не изменил ни одного файла. Он никогда не завершается со статусом failure, поэтому завершённое ревью не приводит к провалу обязательной проверки. Если вы не видите результатов или ревью не запустилось, см. Устранение неполадок Code Review.

Чтение результата из скрипта

Чтобы блокировать слияние или публиковать сводку из собственного CI, разберите последнюю строку текста Details с помощью gh и jq. Эта строка — машиночитаемый комментарий.

1

Найдите ID check run

В оболочке выведите список check run для коммита и возьмите id запуска Claude Code Review. Замените OWNER и REPO на владельца и имя вашего репозитория, а <commit-sha> — на головной коммит pull request:

gh api repos/OWNER/REPO/commits/<commit-sha>/check-runs --jq '.check_runs[] | {id, name}'
2

Прочитайте количество по уровням серьёзности

Прочитайте количество из этого check run, заменив CHECK_RUN_ID на ID:

gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \
--jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'

Команда выводит JSON-объект с количеством для каждого уровня серьёзности, ключи которого упорядочены по алфавиту, например {"nit": 1, "normal": 2, "pre_existing": 0}. В количество входят результаты прежних ревью pull request, ветки обсуждения которых всё ещё открыты.

3

Обработайте результат

Предусмотрите в скрипте обработку следующих случаев:

  • normal больше нуля: завершите задание с ошибкой, если хотите блокировать слияние. Ключ normal содержит количество результатов Important, то есть Claude нашёл хотя бы одну ошибку, которую стоит исправить перед слиянием.
  • Строка отсутствует: считайте это отсутствием вердикта, а не нулём результатов. В check run для ревью, которое завершилось ошибкой, превысило время ожидания, было отменено или заменено более новым, такой строки нет; её также нет в некоторых завершённых ревью.

Запрос ревью

Если ваш pull request является черновиком или создан из форка, автоматические ревью его пропускают, поэтому запросите ревью с помощью команды в комментарии. Чтобы получить ревью для вашего pull request, выполните одно из следующих действий:

  • Откройте его или пометьте как готовый: в репозитории с настройкой Once after PR creation или After every push ревью запускается, когда вы открываете или повторно открываете pull request либо помечаете черновик как готовый к ревью.
  • Оставьте команду в комментарии: опубликуйте @claude review в pull request.
  • Выполните push коммита: push запускает ревью в репозитории с настройкой After every push или в pull request, на который вы подписались с помощью @claude review always.
  • Нажмите Re-run: после того как ревью завершилось ошибкой или превысило время ожидания в pull request, созданном не из форка, запустите его снова из check run.
  • Дождитесь автоматической повторной попытки: ревью, сессия которого была прервана, автоматически повторяется один раз. Сводка check run сообщает, когда это происходит.

Команды в комментариях

Опубликуйте одну из этих команд в виде комментария к pull request:

Команда Что она делает Когда её использовать
@claude review Запускает одно ревью без подписки PR на будущие push Вам нужно одно ревью сейчас, например для pull request в репозитории с настройкой Manual, или ещё одно ревью немедленно в других режимах
@claude review always Запускает ревью и подписывает PR на ревью, запускаемые при push, в дальнейшем Вы хотите, чтобы каждый последующий push запускал новое ревью, например для высокоприоритетного PR в репозитории с настройкой Manual
@claude review once То же, что @claude review: запускает одно ревью без подписки Те же случаи, что и для @claude review

Чтобы любая из этих команд запустила ревью, должны выполняться все следующие условия:

  • Опубликуйте её как новый комментарий верхнего уровня к pull request, а не как встроенный комментарий к строке diff и не как тело ревью. Редактирование более раннего комментария не считается.
  • Поместите команду в начало комментария, причём always должно находиться на той же строке, что и остальная часть команды. Регистр не имеет значения.
  • Вам нужны права write, maintain или admin в репозитории. Claude проверяет это через GitHub для каждого комментирующего, а комментарии от ботов не запускают ревью.
  • Pull request должен быть открыт.

Когда команда принята, в pull request появляется check run Claude Code Review с заголовком Code review queued.... Заголовок меняется на Code review in progress..., когда ревью начинается. Claude также может отреагировать на ваш комментарий с помощью 👀, но эта реакция может появиться и тогда, когда ревью не запускается, поэтому ориентируйтесь на check run.

Если ревью уже выполняется для последнего коммита pull request, новый запрос не запускает второе.

Что охватывает последующее ревью

Последующее ревью, которое запускается само, например после push, фокусируется на том, что изменилось с момента последнего ревью, и публикует меньше результатов nit и pre-existing. В его сводке указывается количество того, что было опущено, в строке, заканчивающейся на «found and not posted» или «outside the scope of this re-review and not posted».

Чтобы получить ревью, в котором ничего из этого не опущено, оставьте комментарий @claude review. Такое ревью снова охватывает весь pull request.

Ревью черновиков и pull request из форков

Автоматические ревью пропускают оба этих случая, поэтому запросите ревью с помощью команды в комментарии:

  • Черновики pull request: команда в комментарии выполняется для черновика, поэтому вы можете запросить ревью до того, как пометите pull request как готовый. Push в черновик не запускают ревью, даже после @claude review always. Подписка вступает в силу, как только вы пометите pull request как готовый.
  • Pull request из форков: Claude не проводит ревью pull request из форка автоматически, независимо от настройки Review runs репозитория. Чтобы запустить ревью, оставьте комментарий @claude review в pull request. Условия для команд в комментариях по-прежнему действуют, причём права на запись нужны в базовом репозитории, а не в форке.

В pull request из форка @claude review always тоже работает, но не подписывает pull request на ревью при последующих push. Нажатие Re-run в check run там не запускает ревью.

Использование Code Review вместе с Claude Code GitHub Action

Если в репозитории также работает Claude Code GitHub Action в интерактивном режиме с триггерной фразой по умолчанию @claude, комментарий @claude review запускает и Action. Чтобы разделить их, задайте для входного параметра trigger_phrase в Action другую фразу.