Spec-Zone.ru › Deno 2

deno coverage

deno coverage создает отчеты о покрытии на основе данных, собранных с помощью deno test --coverage.

Включение и исключение файлов

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

Вы можете настроить включение и исключение файлов с помощью параметров --include и --exclude.

Вы можете включить в отчет файлы, которых нет в локальной файловой системе, с помощью параметра --include и настройки шаблона регулярного выражения.

›_
deno coverage --include="^file:|https:"

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

Файлы, в именах которых содержится test.js, test.ts, test.jsx или test.tsx, по умолчанию исключаются.

Это эквивалентно следующему:

›_
deno coverage --exclude="test\.(js|mjs|ts|jsx|tsx)$"

Эта настройка по умолчанию не позволяет тестовому коду влиять на отчет о покрытии. Чтобы URL-адрес соответствовал условиям, он должен соответствовать шаблону включения и не соответствовать шаблону исключения.

Игнорирование кода

Чтобы исключить код из создаваемых отчетов о покрытии, добавьте комментарии для игнорирования покрытия. Ветки и строки в игнорируемом коде исключаются из отчета. Игнорируемые ветки и строки не считаются покрытыми. Вместо этого игнорируемые строки кода считаются пустыми.

Чтобы игнорировать целый файл, добавьте в начало файла комментарий // deno-coverage-ignore-file.

// deno-coverage-ignore-file

// all code in this file is ignored

Игнорируемые файлы не отображаются в отчете о покрытии.

Чтобы игнорировать одну строку, добавьте комментарий // deno-coverage-ignore в строке непосредственно над кодом, который нужно игнорировать.

// deno-coverage-ignore
console.log("this line is ignored");

Чтобы игнорировать несколько строк, добавьте комментарий // deno-coverage-ignore-start над кодом, который нужно игнорировать, и комментарий // deno-coverage-ignore-stop под ним.

// deno-coverage-ignore-start
if (condition) {
  console.log("both the branch and lines are ignored");
}
// deno-coverage-ignore-stop

Весь код после комментария // deno-coverage-ignore-start игнорируется до тех пор, пока не встретится // deno-coverage-ignore-stop.

Каждый комментарий // deno-coverage-ignore-start должен завершаться комментарием // deno-coverage-ignore-stop, а игнорируемые диапазоны не могут быть вложенными. Если эти требования не соблюдены, некоторые строки могут случайно попасть в отчет о покрытии. Команда deno coverage выводит предупреждения о некорректных комментариях.

// deno-coverage-ignore-start
if (condition) {
  // deno-coverage-ignore-start - A warning will be logged because the previous
  //                              coverage range is unterminated.
  console.log("this code is ignored");
  // deno-coverage-ignore-stop
}
// deno-coverage-ignore-stop

// ...

// deno-coverage-ignore-start - This comment will be ignored and a warning will
//                              be logged, because this range is unterminated.
console.log("this code is not ignored");

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

// deno-coverage-ignore Trailing text is allowed.
console.log("This line is ignored");

// But leading text isn't. deno-coverage-ignore
console.log("This line is not ignored");

Комментарии для покрытия должны начинаться с //. Комментарии, начинающиеся с /*, не являются допустимыми комментариями для покрытия.

// deno-coverage-ignore
console.log("This line is ignored");

/* deno-coverage-ignore */
console.log("This line is not ignored");

Покрытие функций

В сводную таблицу и HTML-отчет наряду со столбцами ветвей и строк добавлен столбец покрытия функций:

---------------------------------------------
File         | Branch % | Line % | Function %
---------------------------------------------
main.ts      |   85.7   |  92.3  |    100.0
util.ts      |   75.0   |  88.5  |     66.7
---------------------------------------------
all files    |   80.0   |  90.5  |     83.3
---------------------------------------------

Покрытие функций показывает процент объявленных функций, вызванных хотя бы один раз во время выполнения тестов. Эти же данные доступны в выводе lcov.

Пороговые значения покрытия

По умолчанию deno coverage и deno test --coverage завершаются с кодом 0 независимо от того, насколько низки показатели. Чтобы проверять покрытие в CI, задайте минимальный порог: команда завершится с ненулевым кодом, если покрытие окажется ниже этого значения.

Передайте --threshold команде deno coverage, указав целое число в процентах. Это значение применяется ко всем трем показателям из сводной таблицы: покрытию строк, ветвей и функций.

›_
deno coverage --threshold=90

Если вы собираете и проверяете покрытие за один шаг, передайте --coverage-threshold команде deno test:

›_
deno test --coverage --coverage-threshold=90

Чтобы задать разные целевые значения для каждого показателя, добавьте раздел coverage в deno.json. Все ключи в разделе thresholds необязательны и принимают дробное значение в процентах:

{
  "coverage": {
    "thresholds": {
      "lines": 90,
      "branches": 80,
      "functions": 90
    }
  }
}

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

При передаче флага CLI его единственное значение применяется к покрытию строк, ветвей и функций и переопределяет заданные в конфигурации значения для каждого показателя. Если флаг не передан, используются значения deno.json для отдельных показателей.

Форматы вывода

По умолчанию поддерживается собственный формат покрытия Deno, но вы также можете создавать отчеты о покрытии в формате lcov (стандартном формате файлов для описания данных о покрытии кода) или в формате HTML.

›_
deno coverage --lcov --output=cov.lcov

Этот файл lcov можно использовать с другими инструментами, поддерживающими формат lcov.

›_
deno coverage --html

В результате будет создан отчет о покрытии в формате HTML.

Примеры

Создать отчет о покрытии на основе профиля покрытия по умолчанию в рабочей области

›_
deno test --coverage
deno coverage

Создать отчет о покрытии на основе профиля покрытия с пользовательским именем

›_
deno test --coverage=custom_profile_name
deno coverage custom_profile_name

Примечание: каталог покрытия также можно задать с помощью переменной окружения DENO_COVERAGE_DIR.

DENO_COVERAGE_DIR=custom_profile_name deno test
deno coverage custom_profile_name

Включить только покрытие, соответствующее определенному шаблону, — в данном случае включить только тесты из main.ts

›_
deno coverage --include="main.ts"

Экспортировать покрытие тестов из профиля покрытия по умолчанию в файл lcov

›_
deno test --coverage
deno coverage --lcov --output=cov.lcov
Использование в командной строке:
deno coverage [OPTIONS] [files]...

Вывести отчеты о покрытии из профилей покрытия.

Собрать профиль покрытия с помощью deno test:

deno test --coverage=cov_profile

Вывести отчет в stdout:

deno coverage cov_profile

Включить URL-адреса, начинающиеся со схемы file, и исключить файлы, оканчивающиеся на test.ts и test.js. Чтобы URL-адрес соответствовал условиям, он должен соответствовать шаблону включения и не соответствовать шаблону исключения:

deno coverage --include="^file:" --exclude="test\.(ts|js)" cov_profile

Записать отчет в формате lcov:

deno coverage --lcov --output=cov.lcov cov_profile/

Создать HTML-отчеты из lcov:

genhtml -o html_cov cov.lcov

Параметры

--detailed

Вывести подробный отчет о покрытии в терминал.

--exclude<regex>

Исключить исходные файлы из отчета.

--html

Вывести отчет о покрытии в формате HTML в указанную директорию.

--ignore<ignore>

Игнорировать файлы покрытия.

--include<regex>

Включить исходные файлы в отчет.

--lcov

Вывести отчет о покрытии в формате lcov.

--output<output>

Экспортировать отчет о покрытии в формате lcov в указанный файл. Если аргумент --output не задан, отчет выводится в stdout.

--threshold<PERCENT>

Завершиться с ошибкой, если покрытие ниже указанного процента (0–100); значение применяется к покрытию строк, ветвей и функций. Пороговые значения для отдельных показателей можно задать в deno.json в разделе "coverage": { "thresholds": { ... } }. Флаг имеет приоритет.

Последнее обновление: 24 июня 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/coverage

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API