gpt4 book ai didi

c++ - 代码覆盖率(c++代码执行路径)

转载 作者:可可西里 更新时间:2023-11-01 16:36:01 29 4
gpt4 key购买 nike

假设我有这段代码:

int function(bool b)
{
// execution path 1
int ret = 0;
if(b)
{
// execution path 2
ret = 55;
}
else
{
// execution path 3
ret = 120;
}
return ret;
}

我需要某种机制来确保代码已进入任何可能的路径,即上面代码中的执行路径 1、2 和 3。

我想过有一个全局函数、 vector 和一个宏。
该宏将简单地调用该函数,将源文件名和代码行作为参数传递,该函数将通过向 vector 插入宏传递的信息来将其标记为“已检查”。

问题是我不会看到任何关于没有“检查”的路径。
知道我该怎么做吗?如何在编译时“注册”一行代码,然后在运行时我可以看到它还没有“检查”?

我希望我是清楚的。

最佳答案

通常覆盖实用程序(例如 gcov )随编译器一起提供。但是请注意,他们通常只会为您提供 C0 保险。即

  • C0 - 每行至少执行一次。请注意 a ? b : c 被标记为已执行,即使只使用了一个分支也是如此。
  • C1 - 每个分支至少执行一次。
  • C2 - 每条路径至少执行一次

因此,即使您的测试显示 100% C0 覆盖率,您也可能无法捕捉到代码中的每条路径 - 并且您可能没有时间去做(路径数量相对于分支呈指数增长)。但是,最好知道您的 C2 含量是 10% 还是 70%(或 0.1% C2)。

关于c++ - 代码覆盖率(c++代码执行路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2946651/

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