介子中的C语言覆盖率报告

C language coverage report in meson

我正在尝试获取介子覆盖率报告。根据documentation,应该是这么简单:

首先,使用此命令初始化构建目录。

$ meson <other flags> -Db_coverage=true

然后发出以下命令。

$ meson compile
$ meson test
$ meson compile coverage-html (or coverage-xml)

覆盖率报告可以在 meson-logs 子目录中找到。

但是,它对我不起作用。所有步骤都可以,除了最后一步:

$ meson compile coverage_html

ERROR: Can't invoke target `coverage_html`: target not found

对此有什么想法吗?

看起来参考的一部分已经过时了,我正在使用 ninja 后端并且有相同的行为:

$ meson compile coverage-text -C build

ERROR: Can't invoke target `coverage-text`: target not found

但是直接调用目标是有效的:

$ ninja coverage-html -C build
ninja: Entering directory `build'
[1/1] Generates HTML coverage report
LLVM (http://llvm.org/):
  LLVM version 7.0.1
  
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: haswell
lcov: LCOV version 1.13
genhtml: LCOV version 1.13
Capturing coverage data from /home/<>/build
Found gcov version: 8.3.0
Scanning /home/<>/build for .gcno files ...
Found 212 graph files in /home/<>/build
Processing aaa.p/bbb.cc.gcno
...

还要检查选项是否设置正确

$ meson configure build | grep cover  
  b_coverage          true        

如果您安装了 lcovgcovr

因此,使用覆盖率报告进行测试的当前(最少)步骤应该是:

$ meson setup build -Db_coverage=true
$ meson test -C build
$ ninja coverage-html -C build
# or coverage-xml or coverage-text, or just 'coverage' which should generate all 3 if possible