Новая функциональность

Представляем правила уровня PR:
Проверяйте PR, а не только код

Автоматически применяйте командные соглашения для сообщений коммитов, описаний PR, breaking changes и многого другого

22 декабря 2025
8 мин чтения

Code review — это не только про код. Это про контекст: Почему было сделано это изменение? Сфокусирован ли PR на чём-то одном? Задокументированы ли breaking changes? До сих пор инструменты для code review на базе ИИ игнорировали всё это. Сегодня это меняется.

Мы рады представить правила уровня PR — новую категорию правил, которые анализируют весь Pull Request целиком, а не только отдельные файлы. С двумя новыми специальными тегами, pr-level и git-history, вы теперь можете автоматически применять соглашения вашей команды по оформлению PR.

Что нового

Традиционный code review на базе ИИ анализирует файлы по одному, проверяя баги, проблемы безопасности и паттерны. Но некоторые из самых важных аспектов хорошего PR невозможно найти ни в одном отдельном файле:

Качество описания PR

Объясняет ли оно ПОЧЕМУ, а не только ЧТО?

Сообщения коммитов

Следуют ли они формату Conventional Commits?

Область охвата PR

Сфокусирован ли он на одном логическом изменении?

Breaking Changes

Задокументированы ли они с инструкциями по миграции?

Теперь diffray может проверять всё это — автоматически, для каждого PR.

Два новых тега: pr-level и git-history

Мы добавили два специальных тега, которые меняют способ обработки правил ИИ-агентом:

pr-level

Для правил, которые анализируют весь PR целиком — качество описания, область охвата, документацию breaking changes, покрытие тестами новых функций.

Агент смотрит на общую картину: Какие файлы изменились? Сколько их? Каково общее намерение?

git-history

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

Агент использует git log для проверки сообщений коммитов и паттернов.

Примеры правил, готовых к использованию

1. Описание PR должно объяснять «Почему»

Самая распространённая проблема с PR: они перечисляют что изменилось, но не почему. Ревьюеры видят diff — им нужен контекст.

- id: pr_description_explain_why
  agent: general
  title: Описание PR должно объяснять мотивацию
  importance: 7
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - Проверить, объясняет ли описание PR бизнес-причину
    - Убедиться, что оно отвечает на "Почему это изменение необходимо?"
    - Искать контекст о решаемой проблеме
  tags:
    - pr-level
    - quality

Плохое описание PR

- Обновлён UserService.ts

- Добавлена валидация в форму входа

- Исправлен баг с оплатой

Хорошее описание PR

## Проблема

Пользователи видели таймауты при оформлении заказа с 50+ товарами из-за N+1 запросов.

## Решение

Пакетная загрузка с использованием паттерна DataLoader.

2. Сообщения коммитов в формате Conventional Commits

Обеспечьте единый формат коммитов для автоматической генерации changelog и семантического версионирования:

- id: commit_message_format
  agent: general
  title: Сообщения коммитов должны следовать формату Conventional Commits
  importance: 5
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - Использовать git log --oneline для проверки недавних коммитов
    - Убедиться, что коммиты следуют формату type(scope): description
    - Проверить понятность сообщений (не "fix stuff", "WIP")
  examples:
    bad: |
      fix stuff
      WIP
      update code
    good: |
      feat(auth): add OAuth2 login with Google
      fix(api): handle null response from payment service
  tags:
    - git-history
    - automation

3. Breaking Changes должны быть задокументированы

Ничто не разрушает доверие быстрее, чем недокументированные breaking changes, попавшие в продакшен:

- id: breaking_changes_documented
  agent: general
  title: Breaking changes должны быть чётко задокументированы
  importance: 9
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - Проверить, изменяют ли изменения публичные API или удаляют функциональность
    - Если breaking, убедиться, что сообщения коммитов включают BREAKING CHANGE
    - Проверить наличие руководства по миграции в описании PR
  tags:
    - pr-level
    - git-history
    - breaking-changes

4. PR с единой ответственностью

PR, смешивающие новые функции, исправления багов и рефакторинг, невозможно качественно ревьюить:

- id: pr_single_responsibility
  agent: general
  title: PR смешивает несвязанные изменения
  importance: 7
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - Проверить изменённые файлы для выявления отдельных областей изменений
    - Убедиться, что изменения не затрагивают несколько несвязанных функций
    - Сообщить, если PR затрагивает auth И payments И styling
  tags:
    - pr-level
    - quality

5. Обязательные ссылки на тикеты

Для отслеживаемости и формирования release notes каждый PR должен быть связан с задачей:

- id: pr_ticket_reference
  agent: general
  title: PR должен ссылаться на issue или тикет
  importance: 5
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - Проверить коммиты на наличие ссылок на тикеты (PROJ-123, #123, ENG-456)
    - Искать URL задач в сообщениях коммитов
    - Сообщать только если НИ ОДИН коммит не содержит ссылки на тикет
  tags:
    - pr-level
    - git-history
    - traceability

Как это работает под капотом

Агент general был обновлён специальными инструкциями для обработки этих тегов:

ТегПоведение агента
pr-levelАнализирует общий контекст PR — изменённые файлы, область охвата, качество описания
git-historyИспользует Bash для выполнения git-команд:
git log --oneline -20 — недавние коммиты
git log --stat -5 — с изменениями файлов
git log --format="%s%n%b" -10 — полные сообщения

Правила с always_run: true выполняются для каждого PR независимо от того, какие файлы были изменены. Это делает их идеальными для проверок уровня PR, которые не зависят от конкретных паттернов файлов.

Начало работы

Добавить правила уровня PR в ваш проект очень просто:

1. Создайте директорию для правил

mkdir -p .diffray/rules/pr-quality

2. Добавьте ваши правила

Создайте YAML-файлы с always_run: true и соответствующими тегами

3. Откройте PR

diffray автоматически подхватит ваши новые правила

Мы опубликовали примеры правил в нашем репозитории project-specific-rules, которые вы можете скопировать и настроить под себя.

Почему это важно

Хорошие PR — это больше, чем просто работающий код. Это документация для будущих разработчиков. Это аудиторский след для соответствия требованиям. Это разница между «что тут произошло?» и «а, понятно».

Команды, которые соблюдают стандарты PR, выпускают более качественное ПО. Не потому что код другой, а потому что контекст сохраняется. Теперь diffray может помочь вам поддерживать эти стандарты автоматически.

Правила уровня PR превращают негласные командные знания в автоматизированные проверки. Вместо того чтобы надеяться, что все помнят о необходимости ссылаться на тикеты, документировать breaking changes и писать осмысленные описания — вы получаете единообразную обратную связь по каждому PR.

Попробуйте правила уровня PR уже сегодня

Доступно сейчас для всех пользователей diffray. Добавьте правила в ваш репозиторий и начните получать обратную связь на следующем PR.

Похожие статьи