Чтение результатов и запрос ревью для 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 управляет тем, когда запускаются ревью и насколько они тщательны, для каждого репозитория.
[!NOTE]
Если ваш план не включает Code Review, вы всё равно можете поручить Claude провести ревью вашей ветки из сессии Claude Code: см. Локальное ревью с помощью
/code-review.
Уровни серьёзности
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 или, после некоторых push, которые не изменяют ни одного файла и сохраняют прежний результат, со статусом skipped. Он никогда не завершается со статусом failure, поэтому завершённое ревью не приводит к провалу обязательной проверки. Если вы не видите результатов или ревью не запустилось, см. Устранение неполадок Code Review.
Когда push сохраняет прежний результат
Если после push у check run один из следующих заголовков, Code Review сохранил результат прежнего ревью вместо запуска нового:
- Code review skipped — no new changes: ни один результат Important из прежнего ревью больше не открыт, поэтому новое ревью не требуется
- Code review not repeated — earlier findings still open: чтобы запустить новое ревью, отправьте push с исправлением открытого результата Important или закройте его ветку обсуждения и снова выполните push
На github.com Code Review может сохранить результат, если выполняются оба условия:
- Pull request по-прежнему добавляет и удаляет те же строки, как после пустого коммита, чистого слияния базовой ветки или чистого rebase
- С момента того ревью никто не закрыл ветку обсуждения результата Important
Чтобы получить ревью без изменения кода, оставьте комментарий @claude review или нажмите Re-run в check run.
Чтение результата из скрипта
Чтобы блокировать слияние или публиковать сводку из собственного CI, разберите последнюю строку текста Details с помощью gh и jq. Эта строка — HTML-комментарий, содержащий количество результатов по уровням серьёзности в формате JSON:
<!-- bughunter-severity: {"nit":1,"normal":2,"pre_existing":0} -->
Строки над ней могут содержать имена файлов из pull request. Если вы разбираете текст собственным способом, берите количество только из последней строки, как это делает команда в приведённых ниже шагах.
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}'
Если для коммита было несколько запусков Claude Code Review, например после Re-run, GitHub выводит только самый новый.
2. Прочитайте количество по уровням серьёзности
Прочитайте количество из поля output.text этого check run, в котором хранится текст Details. Замените CHECK_RUN_ID на ID:
gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq '
(.output.text | split("\n") | last
| scan("^<!-- bughunter-severity: (.*) -->$")[0] | fromjson)?
// error("no severity line")'
Команда выводит JSON-объект с количеством для каждого уровня серьёзности, ключи которого упорядочены по алфавиту, например {"nit": 1, "normal": 2, "pre_existing": 0}. За исключением check run, который сохранил прежний результат, в количество входят результаты прежних ревью pull request, ветки обсуждения которых всё ещё открыты.
При заголовке Code review skipped — no new changes в количество не входят открытые nit и pre-existing результаты из прежних ревью. Ни один результат Important из прежнего ревью в этом случае не открыт.
3. Обработайте результат
Предусмотрите в скрипте обработку следующих случаев в указанном порядке:
- Заголовок начинается с
Code review not repeated: Code Review сохранил прежний результат, результаты Important которого всё ещё открыты, и в check run нет строки с количеством по уровням серьёзности. Прочитайте заголовок до количества с помощьюgh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq .output.title. Завершите задание с ошибкой, если хотите блокировать слияние. - Заголовок заканчивается на
no new changes: позвольте заданию пройти успешно без чтения количества normalбольше нуля: завершите задание с ошибкой, если хотите блокировать слияние. Ключnormalсодержит количество результатов Important, то есть Claude нашёл хотя бы одну ошибку, которую стоит исправить перед слиянием. Чтобы вывести только это количество, добавьте| .normalперед закрывающей одинарной кавычкой.- Строка отсутствует: вместо количества команда выводит ошибку, содержащую
no severity line, и завершается с ненулевым статусом. Считайте это отсутствием вердикта, а не нулём результатов. В 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. Если после push ваш pull request по-прежнему добавляет и удаляет те же строки, Code Review может вместо этого сохранить предыдущий результат. - Нажмите Re-run: после того как ревью завершилось ошибкой или превысило время ожидания в pull request, созданном не из форка, запустите его снова из check run. В pull request, созданном не из форка, вы также можете нажать Re-run после push, при котором был сохранён предыдущий результат.
- Дождитесь автоматической повторной попытки: ревью, сессия которого была прервана, автоматически повторяется один раз. Сводка 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 |
@claude review stop |
Завершает подписку PR на ревью, запускаемые при push, не запуская ревью и не отменяя уже выполняющееся. Claude отвечает комментарием вместо check run. | Вы подписали PR с помощью @claude review always в репозитории с настройкой Manual или Once after PR creation и больше не хотите, чтобы каждый push запускал ревью |
@claude review off или @claude review pause |
То же, что @claude review stop |
Те же случаи, что и для @claude review stop |
В репозитории с настройкой After every push нельзя остановить ревью с помощью комментария, поскольку push там запускают ревью независимо от наличия подписки. Чтобы push не запускали ревью для одного pull request в таком репозитории, преобразуйте его в черновик. Когда вы снова пометите его как готовый к ревью, запустится ревью.
Чтобы любая команда в комментарии сработала, должны выполняться все следующие условия:
- Опубликуйте её как новый комментарий верхнего уровня к pull request, а не как встроенный комментарий к строке diff и не как тело ревью. Редактирование более раннего комментария не считается.
- Поместите всю команду на одной строке в начале комментария. После неё может следовать другой текст. Если
alwaysилиstopнаписано с ошибкой или находится на следующей строке, Claude воспринимает комментарий как обычный@claude reviewи запускает одно ревью. Регистр не имеет значения. - Вам нужны права 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, новый запрос не запускает второе.
[!NOTE]
До обновления в июле 2026 года
@claude reviewподписывал PR на ревью, запускаемые при push. Если вы полагались на это поведение, используйте вместо этого комментарий@claude review always.
Что охватывает последующее ревью
Последующее ревью, которое запускается само, например после push, фокусируется на том, что изменилось с момента последнего ревью, и публикует меньше результатов nit и pre-existing. Чтобы узнать, были ли в результате какие-то результаты опущены, найдите в тексте ревью предложение, в котором указано их количество:
- Результаты по коду, который не изменился с момента последнего ревью: предложение заканчивается на «outside the scope of this re-review and not posted»
- Результаты nit и pre-existing: предложение заканчивается на «found 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 другую фразу.
Связанные ресурсы
- Устранение неполадок Code Review: ревью, которое не запустилось, завершилось ошибкой или было пропущено из-за бюджета
- Code Review: что представляет собой сервис и как выполняется ревью
- Настройка Code Review: для Owner — включение Code Review и выбор того, когда и на каком уровне запускаются ревью
- Настройка Code Review под ваши нужды: изменение того, что помечает Claude, с помощью
REVIEW.mdиCLAUDE.md - Стоимость и использование Code Review: как тарифицируются ревью и где задаётся лимит расходов
- Локальное ревью с помощью
/code-review: запуск ревью вашей ветки из сессии Claude Code