有人可以向我解释为什么下面的单元测试代码在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将报告此误报。

07-24 20:49