Skip to content
Neuronavt
Go back

Как научить код-ревью помнить прошлые ошибки

Туториал8/10

Коротко

Статья предлагает систему код-ревью с долговременной памятью: семантический поиск находит похожие прошлые замечания, а SQLite точно считает повторы. Это помогает не терять командные уроки и одновременно сохранять проверяемость статистики и работоспособность при сбое сервиса памяти.

Контекст

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

Главное

Как сделано

Поток состоит из трёх шагов: найти релевантные знания, решить, встречалась ли проблема, и сохранить новую информацию либо использовать прежнее решение. Для нечеткого смыслового поиска используется Hindsight с вызовами retain и recall, а для точного учёта — отдельная локальная база SQLite.

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

Для статистики инцидентам присваивается SHA-256-отпечаток из нормализованных названия команды и файла, фрагмента кода и описания ошибки. Таблица incidents хранит отпечаток, команду, файл, число повторов и время первого появления. Если сетевой вызов к памяти не удаётся, ревью не должно падать: инцидент записывается в локальный журнал. Автор также советует хранить учётные данные в переменных окружения, проверять их наличие заранее и показывать пользователю выполненный поиск и число найденных воспоминаний.

Результаты

Предложенная архитектура позволяет искать похожие замечания по смыслу, вести отдельный точный журнал повторов и строить сводку для менеджера по файлам и командам. В статье приведены фрагменты Python и SQL, но нет измерений качества поиска, экономии времени или результатов внедрения.

Ограничения

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

Что взять себе

Читать оригинал, если…

Откройте оригинал, если нужны приведённые фрагменты Python/SQL, детали вызовов Hindsight или исходный репозиторий для реализации.