Spec Drift Detector: код против ТЗ
Загрузите утверждённые требования и изменения из Git или pull request. Инструмент построит карту «требование ↔ файл ↔ тест» и покажет, где реализация, вероятно, расходится с ТЗ: изменения без требований, требования без тестов, удаления в связанном коде, другие числа в коде. Каждое замечание — с правилом, доказательством и местом для решения ревьюера.
Бесплатно, без регистрации
Baseline требований
Файл requirements-baseline из «Интервьюера требований» или другого инструмента InterLAB. Можно дополнить списком ниже.
Строки вида «REQ-001: Вход по email [Must]», «- [NFR-2] …», заголовки «### REQ-3 …» или таблица Markdown со столбцом ID. Строки под требованием дополняют его: «Ключевые слова: login, lockout», «Приоритет: Must», «Критерий: …».
Через запятую. ID из baseline добавляются автоматически.
Как работает сверка
Требования с ID
Файл requirements-baseline из «Интервьюера требований» или вставленный список: строки «REQ-001: …», «- [NFR-2] …», заголовки или таблица Markdown. Префиксы ID настраиваются.
Изменения
Unified diff (git diff, git format-patch, .diff/.patch из PR), при желании — журнал коммитов, заголовок и описание PR, имя ветки.
Тестовые доказательства
Тестовые файлы в diff определяются по путям (tests/…, __tests__/…, e2e/…; login.test.ts, cart.spec.js; auth_test.go; test_auth.py, auth_test.py; AuthServiceTest.java; AuthTests.cs; user_spec.rb; UserTest.php; LoginTests.swift; __snapshots__/x.snap). Дополнительно можно вставить отчёт JUnit XML или список тестов со статусами.
Трассировка и правила
Связи строятся по явным ID (высокая уверенность) и по совпадению слов (средняя или низкая, со списком слов). Затем правила SD-01…SD-08 формируют замечания с доказательствами.
Решение ревьюера
У каждого замечания — статус: не разобрано, подтверждено расхождение, ложное срабатывание, принятое изменение (нужен запрос на изменение), комментарий и имя. Решения сохраняются при повторном анализе, если совпадает ключ «правило + требование + файл».
Правила и пороги
Таблицы ниже строятся из того же кода, что и анализ, — правила v1.0 (13.10.2026).
SD-01
- Что ищем
- Требование затронуто, но нет тестового доказательства
- Как обнаруживается
- Требование связано с изменённым кодом (ID или совпадение слов со средней уверенностью) либо упомянуто в коммите, PR или ветке, но ни один изменённый тестовый файл и ни один пройденный тест из отчёта с ним не связан.
- Важность
- Must — высокая, Should — средняя, Could/Won't — низкая
- Зачем
- Поведение изменилось, а подтверждения, что оно соответствует ТЗ, нет.
SD-02
- Что ищем
- Изменение без требования
- Как обнаруживается
- Изменённый файл кода (не тест и не служебный файл) не связан ни с одним требованием с высокой или средней уверенностью.
- Важность
- средняя от 30 изменённых строк, иначе низкая
- Зачем
- Возможна недокументированная доработка или расширение объёма (scope creep).
SD-03
- Что ищем
- Удаление кода, связанного с требованием
- Как обнаруживается
- Файл связан с требованием (высокая или средняя уверенность) и удалён целиком либо содержит ханк, где удалено не меньше 3 строк и больше, чем добавлено; в удалённых строках есть ID или слова требования.
- Важность
- Must — высокая, остальные — средняя
- Зачем
- Возможна регрессия: реализованное требование могло перестать выполняться.
SD-04
- Что ищем
- Упомянут ID, которого нет в требованиях
- Как обнаруживается
- ID по шаблону префиксов найден в коммите, PR, ветке, коде, пути или имени теста, но такого требования нет в списке.
- Важность
- средняя
- Зачем
- Опечатка в ID, устаревший baseline или работа по требованию, которое не утверждено.
SD-05
- Что ищем
- Возможное расхождение значения
- Как обнаруживается
- В тексте требования есть число с единицей (попытки, время, размер, количество, символы, проценты). В добавленных строках связанного файла есть число рядом со словами той же единицы и словами требования, но ни одно из чисел не равно значению требования (с пересчётом единиц: 30 минут = 1800 с = 1 800 000 мс).
- Важность
- средняя, уверенность всегда низкая
- Зачем
- Значение в коде могло разойтись с ТЗ. Показываются оба — сравните вручную.
SD-06
- Что ищем
- Изменения по безопасности или производительности без тестов
- Как обнаруживается
- То же, что SD-01, но требование нефункциональное или его текст относится к безопасности или производительности (словарь категорий опубликован ниже).
- Важность
- высокая
- Зачем
- Такие свойства не видны при ручной проверке интерфейса — нужны тесты или измерения.
SD-07
- Что ищем
- Обязательное требование не затронуто этим изменением
- Как обнаруживается
- Требование с приоритетом Must не связано ни с кодом, ни с тестами, ни с коммитами этого изменения.
- Важность
- информация (не расхождение)
- Зачем
- Это не ошибка: просто видно, что осталось вне изменения.
SD-08
- Что ищем
- Связанный тест падает
- Как обнаруживается
- Тест из отчёта (JUnit XML или список) связан с требованием по ID или по словам и имеет статус failed/error.
- Важность
- высокая
- Зачем
- Требование, вероятно, не выполняется в текущей версии.
Явный ID
- Условие
- ID требования в коммите, PR, ветке, строке кода, пути файла или имени теста
- Уверенность
- высокая
Слова — средняя
- Условие
- балл ≥ 4 и не меньше 2 разных понятий (1 за понятие в изменённых строках, +1 если оно в пути файла)
- Уверенность
- средняя
Слова — слабая
- Условие
- балл ≥ 2; видна на карте, но не считается трассой
- Уверенность
- низкая
Тест из отчёта по словам
- Условие
- совпало ≥ 2 понятий; тест с ID в имени связывается только по ID
- Уверенность
- средняя
Слишком общие понятия
- Условие
- понятие из больше чем 50% требований (при 4+ требованиях) не используется
- Уверенность
- —
Слова: camelCase, snake_case, kebab-case и пути режутся на слова; английские слова приводятся к основе (attempts → attempt), русские — к первым 5 буквам после снятия окончания (попытки, попыток → попыт). Русские основы дополняются английскими эквивалентами из словаря, например: вход… → login, signin, auth; авториз… → auth, login, authorize; аутен… → auth, authenticate; регис… → signup, register, registration; парол… → password, passwd, pwd; попыт… → attempt, tries, retry; блоки… → lock, lockout, block; забло… → lock, lockout, block.
Категории нефункциональных требований (для SD-06): безопасность — безопас, парол, шифр, доступ к, доступа, авториз, аутентиф, токен, уязвим, персональн, блокиров, попыт…; производительность — производит, быстр, время ответа, задержк, нагрузк, кэш, кеш, секунд, миллисекунд, одновременн….
Служебные файлы не считаются «изменением без требования»: документация (.md, .txt, .rst); каталог docs/; настройки репозитория, лицензия, CHANGELOG; изображения, шрифты, медиа, lock-файлы менеджеров пакетов, бинарные файлы.
Ограничения
- Связи по словам — эвристика: возможны и ложные связи, и пропуски. Самый надёжный способ — писать ID требований в коммитах, PR и именах тестов.
- Код не запускается; логика, семантика и файлы вне diff не анализируются. «Тест есть» не значит «тест проверяет требование».
- Числовые расхождения (SD-05) ищутся только рядом со словами той же единицы и всегда имеют низкую уверенность; числа прописью («пять попыток») не распознаются.
- Многопользовательский доступ и роли — этап после проверки спроса: сейчас данные есть только в вашем браузере, а «кто решил» записывается со слов ревьюера, без электронной подписи.
Приватность
- Требования, diff, коммиты и отчёты обрабатываются в вашем браузере: сами тексты не отправляются на сервер и не попадают в адрес страницы.
- Черновик, решения ревьюера и версии хранятся только в этом браузере (localStorage); «Очистить всё» удаляет их.
- Перед экспортом инструмент предупреждает о строках, похожих на секреты; в отчёте такие значения заменяются на [REDACTED].
- В аналитику уходит только факт проверки или экспорта и категория (источник требований, формат файла) — без содержимого.
- Результат уходит к нам, только если вы сами оставите заявку и не снимете галочку «Приложить результат» — что именно уйдёт, видно в форме. В сводке — счётчики, покрытие и правило · ID требования · файл, без кода, diff и текстов требований.
Похожие инструменты
Все инструменты · 40
Ревьюер кода, в том числе написанного ИИВставьте diff pull request — получите замечания по безопасности, миграциям, тестам и архитектуре с доказательством из кода и сортировкой по критичности. Код не изменяется.
Самопроверка зрелости MVP16 вопросов о коде, доступах, данных, тестах и релизах. Покажет, что проверить в первую очередь, — без оценок «из 100» и без регистрации.
Context Vault: контекст проектаДокументы, решения и ограничения проекта в одном месте: поиск по источникам, контроль устаревания и контекстные пакеты под задачу для AI-агента или нового разработчика.
Project Handoff: передача проектаСнимок репозитория, архитектура, прогресс, блокеры, риски, тесты и следующие задачи → проверяемый пакет передачи для разработчика или AI-агента.
Готовность к релизуМатрица проверок с доказательствами: CI, миграции, резервные копии, план отката, мониторинг, исключения из рисков и согласование → решение GO / NO-GO.Нужна проверка кода против ТЗ?
Аудит кода, в том числе написанного с AI-агентами: сверка с требованиями, безопасность, тесты, план исправлений. Первый короткий разговор бесплатный; объём и стоимость — после брифа.
- Первый короткий разговор бесплатный — выбираем формат работы
- NDA — по вашему или нашему шаблону
- Стоимость — после брифа и согласования объёма