Может кто-нибудь объяснить мне, почему следующий код для модульного теста дает ошибку unreadVariable для n и k в cppcheck? Комбинации - это шаблонный класс, который вычисляет все комбинации n, выбирает k, но это не имеет значения здесь.cppcheck жалуется на unreadVariable при использовании в шаблоне
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));
}
Благодарим вас за ссылку. Я не стал подвергать сомнению полномочия cppcheck. ;-) – Nikolai