【发布时间】:2016-10-28 13:28:51
【问题描述】:
有人可以向我解释为什么下面的单元测试代码会在 cppcheck 中为 n 和 k 提供错误 unreadVariable 吗? Combinations 是一个模板类,它计算 n 选择 k 的所有组合,但这在这里应该无关紧要。
TEST(Combinations, ChooseOne)
{
const UINT8 n = 3;
const UINT8 k = 1;
Combinations<n, k> comb;
comb.calc();
std::vector< std::vector<UINT8> > _vui8Expect = { { 2 }, { 1 }, { 0 } };
EXPECT_THAT(comb.result, ::testing::ContainerEq(_vui8Expect));
}
我可以将代码更改为以下代码,而不再出现 cppcheck 错误。但我不喜欢这样,因为它使代码不那么冗长。 n、k 是统计学中定义明确的量,它们可以在调用中更清楚地说明发生了什么。
TEST(Combinations, ChooseOne)
{
Combinations<3, 1> comb;
comb.calc();
std::vector< std::vector<UINT8> > _vui8Expect = { { 2 }, { 1 }, { 0 } };
EXPECT_THAT(comb.result, ::testing::ContainerEq(_vui8Expect));
}
【问题讨论】:
标签: c++ googletest static-code-analysis cppcheck