Инструменты InterLAB · Diff и требования · трассируемость

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 добавляются автоматически.

Как работает сверка

  1. Требования с ID

    Файл requirements-baseline из «Интервьюера требований» или вставленный список: строки «REQ-001: …», «- [NFR-2] …», заголовки или таблица Markdown. Префиксы ID настраиваются.

  2. Изменения

    Unified diff (git diff, git format-patch, .diff/.patch из PR), при желании — журнал коммитов, заголовок и описание PR, имя ветки.

  3. Тестовые доказательства

    Тестовые файлы в 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 или список тестов со статусами.

  4. Трассировка и правила

    Связи строятся по явным ID (высокая уверенность) и по совпадению слов (средняя или низкая, со списком слов). Затем правила SD-01…SD-08 формируют замечания с доказательствами.

  5. Решение ревьюера

    У каждого замечания — статус: не разобрано, подтверждено расхождение, ложное срабатывание, принятое изменение (нужен запрос на изменение), комментарий и имя. Решения сохраняются при повторном анализе, если совпадает ключ «правило + требование + файл».

Правила и пороги

Таблицы ниже строятся из того же кода, что и анализ, — правила 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.
Важность
высокая
Зачем
Требование, вероятно, не выполняется в текущей версии.
Правила v1.0 от 13.10.2026

Явный 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-агента.Учёт расходов на AI-агентовИмпорт событий API (CSV/JSONL) → токены и затраты по проектам, моделям и задачам, повторные попытки, бюджеты и предупреждения. Цены — из вашего прайса.Готовность к релизуМатрица проверок с доказательствами: CI, миграции, резервные копии, план отката, мониторинг, исключения из рисков и согласование → решение GO / NO-GO.
Расскажите о задаче — мы изучим запрос и свяжемся с вами

Нужна проверка кода против ТЗ?

Аудит кода, в том числе написанного с AI-агентами: сверка с требованиями, безопасность, тесты, план исправлений. Первый короткий разговор бесплатный; объём и стоимость — после брифа.

  • Первый короткий разговор бесплатный — выбираем формат работы
  • NDA — по вашему или нашему шаблону
  • Стоимость — после брифа и согласования объёма

Не присылайте через форму пароли, ключи доступа и исходный код — безопасную передачу доступа обсудим отдельно.

Нажимая кнопку, вы соглашаетесь с обработкой персональных данных.