Код после возврата заявления без предупреждения

Мы только что нашли проблему в нашей базе кода, где оператор находится после оператора return.

например

std::string MyClass::addElement(Type1 &item, const std::string &param2)
{
if (param2.empty())
{
// logging
return "";
}

return m_database->addElement(item, param2, item.status, true);

// here I would expect an unreachable code warning
m_database->updateTableA(item.p1, item.p2, item.p3, AType::AType23);
}

Что я не понимаю, почему наш компилятор (GCC 4.8.5 и 7) не выдает предупреждение?

Мы компилируем с -std=c++0x -Wall -Wextra -Wsign-compare -Wunknown-pragmas -Wold-style-cast -Wshadow -Wfatal-errors

3

Решение

НКУ не могу выдать предупреждение о мертвом коде, так как Wunreachable-code флаг / функция убрана после версии 4.4, как вы можете прочитать Вот.

Версия 4 Clang (head is 8 out, поэтому я не рекомендую это делать) также выдаст предупреждение, когда код скомпилирован с [-Wunreachable-code флаг:

предупреждение: код никогда не будет выполнен [-Wunreachable-code]


Вы можете попробовать инструмент статического анализа, их много в этом список.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]