我有一个C++项目,我想使用bazel coverage获取其代码覆盖率信息。但是,运行命令后,我发现coverage.dat中的文件bazel-testlogs不包含任何内容。那我在找对地方了吗?还是Bazel有问题?我正在使用Bazel 1.0.0。完整的例子WORKSPACEload("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")git_repository( name = "gtest", remote = "https://github.com/google/googletest", commit = "3306848f697568aacf4bcca330f6bdd5ce671899",)lib/a.ccint f(int x) { if (x == 0) return x + 1; else return 1 + x;}lib/BUILDcc_library( name = "a", srcs = ["a.cc"], visibility = ["//test:__pkg__"],)test/my_test.cc#include "gtest/gtest.h"TEST(FactorialTest, Negative) { EXPECT_EQ(1, 1);}test/BUILDcc_test( name = "my_test", srcs = ["my_test.cc"], copts = ["-Iexternal/gtest"], deps = ["@gtest//:gtest_main", "//lib:a"],)运行bazel coverage //test:my_test后,我看到生成了bazel-testlogs/test/my_test/coverage.dat的文件,但该文件为空(0字节)。 最佳答案 当前,Bazel Coverage 仅支持Linux。我使用bazel创建了一个项目,用于导出C++代码覆盖率(https://github.com/hohaidang/STM32-from-scratch/tree/master/004_SPI_driver_CPP)打开unit_test文件夹以获取有关BUILD文件的更多详细信息Bazel版本3.5.0$ bazel coverage unit_test:ut_gpio --combined_report=lcov$ genhtml bazel-out/_coverage/_coverage_report.dat -o test_coverage注意:您应该将所有测试文件和源文件放在同一文件夹中。如果文件夹不同,它将生成无效的.dat文件。我仍然不知道如何解决。关于c++ - 如何使用Bazel获得C++代码覆盖率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58368854/ 10-13 07:55