Eri*_*lib 5 c++ code-coverage bazel
我有一个 C++ 项目,我想用它bazel coverage来获取它的代码覆盖率信息。
但是,运行该命令后,我发现coverage.dat里面 的文件bazel-testlogs不包含任何内容。
所以我看对地方了吗?还是Bazel有问题?
我正在使用 Bazel 1.0.0。
完整示例
WORKSPACE
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "gtest",
remote = "https://github.com/google/googletest",
commit = "3306848f697568aacf4bcca330f6bdd5ce671899",
)
Run Code Online (Sandbox Code Playgroud)
lib/a.cc
int f(int x) {
if (x == 0)
return x + 1;
else
return 1 + x;
}
Run Code Online (Sandbox Code Playgroud)
lib/BUILD
cc_library(
name = "a",
srcs = ["a.cc"],
visibility = ["//test:__pkg__"],
)
Run Code Online (Sandbox Code Playgroud)
test/my_test.cc
#include "gtest/gtest.h"
TEST(FactorialTest, Negative) {
EXPECT_EQ(1, 1);
}
Run Code Online (Sandbox Code Playgroud)
test/BUILD
cc_test(
name = "my_test",
srcs = ["my_test.cc"],
copts = ["-Iexternal/gtest"],
deps = ["@gtest//:gtest_main", "//lib:a"],
)
Run Code Online (Sandbox Code Playgroud)
运行后bazel coverage //test:my_test,我在bazel-testlogs/test/my_test/coverage.dat生成时看到一个文件,但它是空的(0 字节)。
bazel coverage这样运行:
bazel coverage -s \
--instrument_test_targets \
--experimental_cc_coverage \
--combined_report=lcov \
--coverage_report_generator=@bazel_tools//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:Main \
//...
Run Code Online (Sandbox Code Playgroud)