跳到主要内容

评估代码覆盖率

你正在进行一个更改。你希望评估新代码的代码覆盖率。

V8提供了两种工具来实现这一目标:在本地运行和使用构建基础设施支持。

本地

相对于v8仓库的根目录,使用./tools/gcov.sh(在Linux上经过测试)。该工具使用Gnu的代码覆盖工具和一些脚本生成一个HTML报告,你可以深入目录、文件,甚至是代码行,查看覆盖率信息。

脚本会使用gcov设置在一个单独的out目录下构建V8。我们使用单独的目录以避免覆盖正常的构建设置。这个单独的目录被称为cov,它会直接在仓库根目录下创建。gcov.sh脚本随后运行测试套件,并生成报告。脚本运行完成后会提供报告的路径。

如果你的更改包含与架构相关的组件,你可以累积收集来自特定架构运行的覆盖率。

./tools/gcov.sh x64 arm

这会为每个架构就地重新构建,会覆盖上次运行的二进制文件,但会保留并累计覆盖率结果。

默认情况下,脚本从Release版本的运行中收集数据。如果你需要Debug版本的数据,可以指定:

BUILD_TYPE=Debug ./tools/gcov.sh x64 arm arm64

运行脚本而不带任何选项,也会提供选项的摘要说明。

代码覆盖率机器人

对于每次提交到主分支的更改,我们都会运行x64覆盖率分析——请参阅覆盖率机器人。我们不会为其他架构运行覆盖率机器人。

要获取特定运行的报告,你需要列出构建步骤,找到其中的“gsutil覆盖率报告”步骤(靠后的位置),然后打开其下的“报告”。