gpt4 book ai didi

c++ - 如何使用 Bazel 获得 C++ 代码覆盖率?

转载 作者:行者123 更新时间:2023-12-01 14:29:29 32 4
gpt4 key购买 nike

我有一个 C++ 项目,我想使用 bazel coverage获取其代码覆盖率信息。

但是,运行该命令后,我找到了文件 coverage.datbazel-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",
)
lib/a.cc
int f(int x) {
if (x == 0)
return x + 1;
else
return 1 + x;
}
lib/BUILD
cc_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/BUILD
cc_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 覆盖范围 <> 仅支持 Linux。
我使用 bazel 创建了一个项目来导出 C++ 代码覆盖率 ( https://github.com/hohaidang/STM32-from-scratch/tree/master/004_SPI_driver_CPP )
打开 unit_test 文件夹以获取有关 BUILD 文件的更多详细信息
巴泽尔版本 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com