我写了一些将cpp二进制文件作为子进程运行的python测试。 Python代码负责在该过程中执行测试。
我在py_test bazel规则中运行这些python测试。问题在于这并不算我们的cpp代码已被测试覆盖,因为py_test规则只能对python文件进行测试Coverga。用于生成coverage的文件是.gcda文件,这些文件是在我们运行bazel coverage test_name
时生成的。在我们的情况下,由于测试以py_test的方式运行,而bazel为此存在打开的错误,因此无法覆盖cpp文件。
我试图在建立cpp二进制文件的cc_binary规则中添加copts = ["-fprofile-arcs","-ftest-coverage"]
和linkopts = ["-fprofile-arcs", "-lgcov --coverage"]
标志(我们用py_test测试那些可执行文件),但是我们唯一要做的就是获取.gcno文件(可能是因为我们的cc_binary仅是构建的而不是运行的)。
是否知道如何获取.gcda文件或以其他任何方式获得覆盖?
答案 0 :(得分:0)
运行二进制文件后,您可以看到生成的.gcda文件。 https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html 执行包含包含使用GCC -fprofile-arcs选项构建的目标文件的程序时,将生成.gcda计数数据文件。将为使用此选项编译的每个目标文件创建一个单独的.gcda文件。它包含圆弧过渡计数,值轮廓计数和一些摘要信息。