Сохранить свои решения12 / 20
Посмотрите охват требований
На этой странице
Насколько вы на самом деле держите под контролем эту программу? Охват требований отвечает одной картинкой: один квадрат на файл кода, расположенный по модулям, и чем темнее квадрат, тем больше строк файла процитировано в ваших объяснениях. Что ещё пусто и какие объяснения устарели, видно с первого взгляда. Наведите указатель на требование, и подсветятся файлы, которые оно покрывает.
Откройте охват требований
Начните новый чат: до отправки первого сообщения область чата показывает карточку «Intent coverage». Можно также открыть Settings → Intent coverage (в группе текущего проекта): карточка займёт страницу целиком, что удобно для больших проектов.
Для охвата требований папка реализации должна быть репозиторием Git. Пока для проекта нет результата охвата, карточка пишет «Not computed yet» и предлагает два пути: «Explain» поручает Агенту сначала написать объяснения, «Compute now» вычисляет охват по уже имеющимся объяснениям. В больших репозиториях приходится читать каждый файл, поэтому это может занять время.
Дальше карточка обновляется каждый раз, когда Explain заканчивает. Справа от строки заголовка показано, когда закончился последний Explain и какой в тот момент был коммит, а рядом кнопка пересчёта.
Прочитайте карточку
Вверху карточки крупное число: доля всех строк кода в области, процитированных объяснениями. Рядом «3 / 6 files» — у скольких файлов из общего числа есть требование за спиной.
Полоса под ним состоит из трёх частей, ниже дана легенда:
- 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 → intents | Files, Definitions | Intents reached, Changes, Per change, No change |
| Intents ← code | Documents, Passages | Files cited, Code changes, Intent changes, No change |
Щёлкните по строке, чтобы раскрыть её на месте. Строка файла показывает, сколько из него цитируют объяснения, какие требования он затрагивает чаще всего, и «View in Intent coverage»; строка требования показывает, сколько файлов она цитирует, какой код затрагивает её чаще всего, и способ открыть этот фрагмент.
Под уровнем файлов в первом представлении находится точечная диаграмма «Coverage and reach»: по горизонтали доля строк, процитированных объяснениями; по вертикали сколько фрагментов требований затрагивает каждое изменение. Файлы справа вверху густо процитированы и часто меняются, поэтому каждое изменение требует перепроверки многих требований; их, возможно, стоит разделить. Более высокий охват не всегда лучше.
Если к проекту ещё не привязана папка реализации, обе страницы предлагают сначала привязать её в Settings → Project.