首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从json结果生成nyc报告(没有.nyc_output)?

如何从json结果生成nyc报告(没有.nyc_output)?
EN

Stack Overflow用户
提问于 2020-05-01 17:11:04
回答 2查看 10.2K关注 0票数 5

我继承了茉莉花单元测试的JS代码库。测试框架使用karmainstanbul-combine来获得代码覆盖率。istanbul-combine似乎无法处理当前的节点模块,而且不再维护:推荐的替换是nyc。我很难在istanbul-combine中用nyc替换Makefile

我成功地将单独的覆盖率结果(json)文件合并到一个coverage-final.json文件(this SO question)中,但现在我需要生成摘要报告。

如何从coverage.json文件生成摘要报告?

我认为,这里的一个问题是,我没有具有中间结果的.nyc_output目录,因为我没有使用nyc生成覆盖数据。我所有的覆盖率数据都在一个coverage目录及其子目录中。

我尝试指定一个文件名:

代码语言:javascript
复制
npx nyc report --include coverage-final.json

还尝试指定目录:

代码语言:javascript
复制
npx nyc report --include coverage

这两样都不管用。

代码语言:javascript
复制
----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |       0 |        0 |       0 |       0 |                   
----------|---------|----------|---------|---------|-------------------

CLI帮助文档显示

代码语言:javascript
复制
  --temp-dir, -t          directory to read raw coverage information from

但是,当我将这个点用于coverage目录(即npx nyc report -t coverage)时,我得到了同样不满意的结果。纽约显然是相当严格的格式,它将接受这些数据。

下面是我要替换的原始Makefile行:

代码语言:javascript
复制
PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
    -d coverage/summary -r html \
    coverage/*/coverage-final.json
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-06 19:38:23

在我的Makefile中使用这一行是有效的:

代码语言:javascript
复制
npx nyc report --reporter html --reporter text -t coverage --report-dir coverage/summary

它从coverage目录中获取JSON文件,并将它们完全放入coverage/summary子目录中的HTML中。(不需要前面问题/答案中的nyc merge命令。)

我不知道为什么-t选项以前不起作用。可能是我使用了错误的nyc版本(15.0.0而不是14.1.1,fwiw)。

票数 15
EN

Stack Overflow用户

发布于 2020-08-20 22:27:31

在尝试多个nyc命令生成来自JSON的报告之后,我发现了nyc的一个有趣的行为:在生成报表时,必须位于检测代码的父目录中。例如,:如果我检测的代码位于/usr/share/node/**中,而合并的coverage.json结果位于/tmp目录中。如果我在/tmp下运行/tmp,我将什么都得不到。

代码语言:javascript
复制
----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files |       0 |        0 |       0 |       0 |
----------|---------|----------|---------|---------|-------------------

但是,如果我在/usr/share/node/下运行相同的命令,我就能够获得正确的覆盖号输出。不确定这是不是纽约的一个奇怪的许可问题。如果这是纽约的预期行为

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61547209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档