All Articles

V8 Blog | JavaScript code coverage 2017-12-13

1. 原文

JavaScript code coverage

2. 摘要翻译

What is it?

Why is it useful?

JavaScript code coverage in V8

  • 5.9版本开始,V8加入了native的代码覆盖率支持,当时是函数粒度的
  • 6.2版本,该功能拓展到代码块粒度

For JavaScript developers

JavaScript开发者可以使用Chrome开发者工具的Coverage tab来查看代码覆盖率和未使用到的代码。

For embedders

对嵌入式和框架作者来说,可以使用API来获得数据,并有两种模式可供选择:

  • 性能模式:对性能影响最小,但可能在垃圾回收函数上丢失数据
  • 精确模式:不会因GC而丢失数据,但可能对性能造成影响

API如下:

类似的,性能模式覆盖率数据可以使用API:Profiler.getBestEffortCoverage()

Behind the scenes

下面是大量的篇幅介绍性能模式和精确模式的一些设计和细节,就不翻译了,感兴趣的可以看原文。

Best-effort coverage

Precise coverage (function granularity)

Precise coverage (block granularity)

Conclusion

EOF

Published 2018/3/21

Some tech & personal blog posts