HeadlinesBriefing favicon HeadlinesBriefing.com

RealDiff: Сравнение поведения для Pull Requests

Hacker News •
×

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

Безобидный на вид рефакторинг может изменить поведение вдали от отредактированного файла. Например, замена List.Sort на OrderBy изменяет неизмененный движок ценообразования. В демо Discount Engine.Select Discount возвращал "CLEARANCE_40", теперь возвращает "SEASONAL_15". Checkout Totals.Compute возвращал 60, теперь возвращает 85. Отредактированный помощник находится в Infrastructure.Collections; наблюдаемый эффект — в Commerce.Pricing. Два из трех тестов, которые это выполняли, не делали утверждений об изменении.

Запустите включенное демо или проверьте поддерживаемый публичный .NET демо pull request и его успешный размещенный запуск. Доказательство создает временное дерево предложенных изменений, изменяет только Sorting Extensions.cs, запускает базу дважды плюс изменение один раз и записывает findings.json. Он проверяет, что отредактированный файл вносит ноль отслеживаемых членов, граница — это Commerce.Pricing.Discount Engine.Select Discount в неизмененном проекте, два места вызовов изменились без реакции утверждения, пять разошедшихся ключей сворачиваются в три граничных узла, а выбор с равным приоритетом детерминирован в новых процессах.

Поддерживаемые шлюзы .NET, Java, Node, Go, Rust и Python применяют те же правила соответствия: идентичные наборы методов, количество событий по ключу и порядковые номера записей, ловушки исходного кода, доказательства дайджестов и ноль расхождений движка для непустых запусков. Статус: ранний предварительный просмотр.

Ключевые сущности: Люди: issacnitin | Места: GitHub, Azure DevOps, MCP