如何根据 json 结果生成 nyc 报告(没有 .nyc_output)?
How to generate nyc report from json results (no .nyc_output)?
我继承了带有 Jasmine 单元测试的 JS 代码库。测试框架使用 karma
和 instanbul-combine
来获取代码覆盖率。似乎 istanbul-combine
不适用于当前的节点模块,而且不再维护:推荐的替代品是 nyc
。我在 Makefile
.
中用 nyc
替换 istanbul-combine
时遇到问题
我成功地将单独的覆盖率结果 (json) 文件合并为一个 coverage-final.json
文件 (),但现在我需要生成摘要报告。
如何从 coverage.json
文件生成摘要报告?
我认为这里的一个问题是我没有包含中间结果的 .nyc_output
目录,因为我没有使用 nyc
来生成覆盖率数据。我所有的覆盖率数据都在 coverage
目录及其子目录中。
我试过指定一个文件名:
npx nyc report --include coverage-final.json
还尝试指定目录:
npx nyc report --include coverage
都不行。
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------
CLI 帮助文档说
--temp-dir, -t directory to read raw coverage information from
但是当我使用指向 coverage
目录(即,npx nyc report -t coverage
)时,我得到了同样令人不满意的结果。纽约市在接受这些数据的格式方面显然相当严格。
这是我要替换的原始 Makefile 行:
PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
-d coverage/summary -r html \
coverage/*/coverage-final.json
在我的 Makefile 中使用这一行有效:
npx nyc report --reporter html --reporter text -t coverage --report-dir coverage/summary
它从 coverage
目录中抓取 JSON 文件,并将它们一起放入 coverage/summary
子目录中的 HTML 报告中。 (不需要我之前 question/answer 中的 nyc merge
命令。)
我不确定为什么 -t
选项以前不起作用。可能是我使用了错误版本的 nyc
(15.0.0 而不是 14.1.1,fwiw)。
在尝试多个 nyc 命令从 JSON 生成报告但没有成功后,我发现了 nyc 的一个有趣行为:当您正在生成报告。 例如:
如果我检测的代码在 /usr/share/node/**
中,合并后的 coverage.json
结果在 /tmp
目录中。如果我运行nyc report --temp-dir=/tmp --reporter=text
在/tmp
下,我什么也得不到。
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------
但是如果我 运行 在 /usr/share/node
或 /
下执行相同的命令,我能够获得包含覆盖率数字的正确输出。
不确定这是否是纽约市的一个奇怪的许可问题。如果这是 nyc
的预期行为
我继承了带有 Jasmine 单元测试的 JS 代码库。测试框架使用 karma
和 instanbul-combine
来获取代码覆盖率。似乎 istanbul-combine
不适用于当前的节点模块,而且不再维护:推荐的替代品是 nyc
。我在 Makefile
.
nyc
替换 istanbul-combine
时遇到问题
我成功地将单独的覆盖率结果 (json) 文件合并为一个 coverage-final.json
文件 (
如何从 coverage.json
文件生成摘要报告?
我认为这里的一个问题是我没有包含中间结果的 .nyc_output
目录,因为我没有使用 nyc
来生成覆盖率数据。我所有的覆盖率数据都在 coverage
目录及其子目录中。
我试过指定一个文件名:
npx nyc report --include coverage-final.json
还尝试指定目录:
npx nyc report --include coverage
都不行。
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------
CLI 帮助文档说
--temp-dir, -t directory to read raw coverage information from
但是当我使用指向 coverage
目录(即,npx nyc report -t coverage
)时,我得到了同样令人不满意的结果。纽约市在接受这些数据的格式方面显然相当严格。
这是我要替换的原始 Makefile 行:
PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
-d coverage/summary -r html \
coverage/*/coverage-final.json
在我的 Makefile 中使用这一行有效:
npx nyc report --reporter html --reporter text -t coverage --report-dir coverage/summary
它从 coverage
目录中抓取 JSON 文件,并将它们一起放入 coverage/summary
子目录中的 HTML 报告中。 (不需要我之前 question/answer 中的 nyc merge
命令。)
我不确定为什么 -t
选项以前不起作用。可能是我使用了错误版本的 nyc
(15.0.0 而不是 14.1.1,fwiw)。
在尝试多个 nyc 命令从 JSON 生成报告但没有成功后,我发现了 nyc 的一个有趣行为:当您正在生成报告。 例如:
如果我检测的代码在 /usr/share/node/**
中,合并后的 coverage.json
结果在 /tmp
目录中。如果我运行nyc report --temp-dir=/tmp --reporter=text
在/tmp
下,我什么也得不到。
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------
但是如果我 运行 在 /usr/share/node
或 /
下执行相同的命令,我能够获得包含覆盖率数字的正确输出。
不确定这是否是纽约市的一个奇怪的许可问题。如果这是 nyc