Содержание документации12 / 20

Сохранить свои решения12 / 20

Посмотрите охват требований

На этой странице

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

Откройте охват требований

Начните новый чат: до отправки первого сообщения область чата показывает карточку «Intent coverage». Можно также открыть Settings → Intent coverage (в группе текущего проекта): карточка займёт страницу целиком, что удобно для больших проектов.

Для охвата требований папка реализации должна быть репозиторием Git. Пока для проекта нет результата охвата, карточка пишет «Not computed yet» и предлагает два пути: «Explain» поручает Агенту сначала написать объяснения, «Compute now» вычисляет охват по уже имеющимся объяснениям. В больших репозиториях приходится читать каждый файл, поэтому это может занять время.

Дальше карточка обновляется каждый раз, когда Explain заканчивает. Справа от строки заголовка показано, когда закончился последний Explain и какой в тот момент был коммит, а рядом кнопка пересчёта.

Прочитайте карточку

Вверху карточки крупное число: доля всех строк кода в области, процитированных объяснениями. Рядом «3 / 6 files» — у скольких файлов из общего числа есть требование за спиной.

Карточка «Intent coverage»: 68% строк кода процитированы объяснениями, и у 41 из 60 файлов есть требование за спиной. В области модулей по точке на файл, сгруппированные по папкам, а ниже перечислен каждый документ требований.

Полоса под ним состоит из трёх частей, ниже дана легенда:

  • Referenced lines: сплошная часть, по длине равная проценту.
  • Explanation outdated: заштрихованная часть, файлы, изменённые после написания их объяснений.
  • No intent: пустая часть, файлы, которые не цитирует ни одно объяснение.

По модулям

Область «Modules» по умолчанию показывает точки: одна точка на файл, одна строка на папку. Файлы с требованием за спиной темнее, чем больше их строк процитировано; файлы с устаревшими объяснениями заштрихованы; файлы без требования пусты. Наведите указатель на точку, чтобы увидеть имя файла и сколько из него процитировано.

Переключатель вверху справа превращает точки в полосы: одна строка на модуль, по длине равная числу его строк и разделённая на три состояния.

Щёлкните по модулю, чтобы спуститься на уровень ниже; в строке заголовка появятся кнопка «назад» и путь. В сервисе подписок, например, строки billing, jobs, notify и web стоят рядом, а строка notify почти пуста: правила писем-уведомлений ещё не записаны в требования.

По требованиям

Под модулями список требований: одна строка на документ требований, с отступами как в дереве документов, и короткая линия показывает, на сколько файлов он отображается. Документ, за которым пока нет кода, серый, с пустой линией.

  • Наведите указатель на документ: строки в области модулей, не имеющие к нему отношения, бледнеют, а раскладка остаётся на месте.
  • Щёлкните по документу: посторонние строки сворачиваются, полоса и точки показывают только код, на который отображается это требование, а под заголовком модулей появляется метка с названием документа и ×.
  • Щёлкните по нему ещё раз, по × метки или нажмите Esc, чтобы сбросить.

Щёлкните, например, по «Продление», и останутся только billing/grace.ts, jobs/renewal-job.ts и несколько файлов тестов. Вы сразу видите, чего коснётся изменение правил продления.

Что значит это число

Охват измеряет, сколько кода цитируют ваши объяснения. Это не качество кода и не покрытие тестами. Оно помогает ответить на два вопроса:

  • Где требований ещё нет? Пустой модуль — это либо не слишком важный код, либо уже работающие правила, которые вы ещё не продумали. Последние заслуживают абзаца требования и запуска Explain.
  • Где объяснения устарели? Густая штриховка означает недавние изменения, за которыми объяснения не успели; см. Когда код меняется.

Гнаться за 100% не нужно. Начните с самого важного для вас и пусть сначала темнеет оно.

Parnas Index

Settings → Parnas Index смотрит на то же с другой стороны: как далеко изменения кода доходят в ваши требования. Название происходит от принципа декомпозиции на модули Дэвида Парнаса: хороший модуль скрывает решение, которое, вероятно, изменится. В Noea фрагмент требования соответствует решению, а файл кода — модулю.

Крупное число вверху показывает, сколько фрагментов требований в среднем перепроверяется на один изменённый файл, а также сколько проверено полностью и у скольких из них ничего не изменилось. Чем оно выше, тем больше решений затрагивает одно изменение. Временное окно может быть 7, 30 или 90 дней.

На странице два представления:

ПредставлениеУровниСтолбцы
Code → intentsFiles, DefinitionsIntents reached, Changes, Per change, No change
Intents ← codeDocuments, PassagesFiles cited, Code changes, Intent changes, No change

Щёлкните по строке, чтобы раскрыть её на месте. Строка файла показывает, сколько из него цитируют объяснения, какие требования он затрагивает чаще всего, и «View in Intent coverage»; строка требования показывает, сколько файлов она цитирует, какой код затрагивает её чаще всего, и способ открыть этот фрагмент.

Под уровнем файлов в первом представлении находится точечная диаграмма «Coverage and reach»: по горизонтали доля строк, процитированных объяснениями; по вертикали сколько фрагментов требований затрагивает каждое изменение. Файлы справа вверху густо процитированы и часто меняются, поэтому каждое изменение требует перепроверки многих требований; их, возможно, стоит разделить. Более высокий охват не всегда лучше.

Если к проекту ещё не привязана папка реализации, обе страницы предлагают сначала привязать её в Settings → Project.