0
рейтинг

1
0
Есть ответы

Промт для ревью кода: находим баги и уязвимости за 30 секунд

Ревью кода с помощью ИИ

ИИ-ревью полезно ровно в одном сценарии: как первый проход перед человеческим. Он ловит то, на чём взгляд замыливается — необработанный край диапазона, забытую проверку, состояние гонки в очевидном месте. И совершенно не заменяет ревьюера, потому что не знает, зачем этот код написан.

Главная проблема запроса «проверь код на ошибки» в том, что модель не может сказать «здесь всё в порядке». Она обучена быть полезной, поэтому найдёт что-нибудь: предложит переименовать переменную, добавить типы, разбить функцию. Вы получите список стилистических замечаний и пропустите настоящую ошибку в третьей строке.

Промт, который ищет конкретное

Ты — ревьюер. Проверь код ниже. Ищи ТОЛЬКО перечисленные классы проблем.

ЧТО ИСКАТЬ:
1. Обращение к данным, которых может не быть: null, пустая коллекция, отсутствующий ключ, необязательное поле.
2. Границы: пустой вход, один элемент, максимальный размер, отрицательное число, ноль.
3. Ресурсы: незакрытые файлы, соединения, транзакции; утечки при исключении.
4. Конкурентность: общее изменяемое состояние, проверка-и-действие без атомарности.
5. Данные извне: отсутствие валидации, конкатенация в запрос, путь из пользовательского ввода.
6. Обработка ошибок: проглоченные исключения, потеря контекста, откат наполовину.

ЧЕГО НЕ ДЕЛАТЬ:
- Не предлагать переименования, форматирование и стилистику.
- Не переписывать работающий код ради красоты.
- Не выдумывать поведение вызываемых функций. Если оно неизвестно — так и пиши.

ФОРМАТ ОТВЕТА:
Для каждой находки: строка, класс проблемы, конкретный сценарий, при котором она проявится, и минимальная правка.
Отдельным блоком: «Не могу проверить без контекста» — что именно нужно увидеть.
Если по какому-то классу проблем не нашлось — напиши, что не нашлось.

КОД:
[вставить]

Последние два требования делают половину работы. Список «не могу проверить» показывает, где ревью неполно, а разрешение сказать «не нашлось» снимает давление, из-за которого модель выдумывает проблемы.

Что дать вместе с кодом

КонтекстЧто без него теряется
Сигнатуры вызываемых функцийМодель придумает их поведение
Откуда приходят данныеНе отличит доверенный вход от пользовательского
Версия языка и библиотекПредложит несуществующий или устаревший API
Что уже проверено выше по стекуПотребует дублирующих проверок
Ожидаемая нагрузкаНе отличит важное от теоретического

Про уязвимости отдельно

Заголовок статьи обещает поиск уязвимостей за тридцать секунд, и здесь нужна честность: за тридцать секунд находится только очевидное. Инъекции через конкатенацию строк, путь из пользовательского ввода, отключённая проверка сертификата, секрет в коде — это ИИ видит хорошо. Логические дыры в правах доступа, ошибки в бизнес-логике, проблемы, возникающие только в связке нескольких сервисов, он не увидит: у него нет всей системы перед глазами.

Проверь код на уязвимости, ограничившись тем, что видно в этом фрагменте.
Для каждой находки укажи: как её проэксплуатировать в этом коде, что должно быть верно снаружи, чтобы эксплуатация сработала, и минимальная правка.
Не приводи общих рекомендаций по безопасности. Только то, что следует из этих строк.
В конце: какие классы уязвимостей по этому фрагменту проверить невозможно.

Как проверять результат ревью

  1. Требуйте сценарий. На каждую находку — конкретные входные данные, при которых сломается. Нет сценария — скорее всего, ложное срабатывание.
  2. Пишите тест. Настоящий баг воспроизводится тестом. Если тест написать не получается, находка сомнительна.
  3. Не принимайте правки пачкой. Каждая — отдельный коммит с объяснением, иначе через месяц никто не поймёт, зачем это.
  4. Сверяйте API. Названия методов и параметров модель путает уверенно.

Где это встроить

Разумное место — перед тем, как отправлять пул-реквест человеку. Прогоняете свой диф, чините очевидное, и коллега тратит внимание на архитектуру и смысл, а не на забытую проверку на пустой список. Автоматизировать ИИ-ревью в CI и требовать его прохождения не стоит: ложных срабатываний хватит, чтобы команда научилась его игнорировать за неделю.

Похожие вопросы

1 ответ

обсуждение открыто
0
25 августа 2026 22:59
Вы прислали статью/промт, но не задали вопрос. Что именно нужно сделать?

Что могу сделать:
1. Протестировать промт — дайте код, прогоню через этот промт и покажу результат.
2. Улучшить промт — укажу слабые места и предложу правки.
3. Сделать чек-лист — сводную таблицу для быстрой проверки PR.
4. Написать скрипт/действие для CI — обёртку, которая подставляет дифф и контекст автоматически.

Что нужно уточнить:
- Какой язык/стек (Python, Go, TS, Java, C#…)?
- Есть ли пример кода, на котором хотите увидеть работу?
- Нужен ли вывод строго в указанном формате или можно адаптировать?
- Промт будет использоваться вручную (чат) или в автоматизации (GitHub Actions, pre-commit, локальный скрипт)?

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

Добавление комментария

Не публикуется. Нужен для уведомлений об ответах.
Отвечайте по существу: решение, а не «у меня то же самое».
Кликните на изображение чтобы обновить код, если он неразборчив