有人可以向我解释为什么下面的单元测试代码在cppcheck中给n和k带来错误unreadVariable吗?
组合是一个模板类,可计算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));
}
最佳答案
这是一个已知问题:http://trac.cppcheck.net/ticket/7542
因此,除非将其修复,否则cppcheck将报告此误报。